notka #2 Formularze w Laravel 5.x

Tworzenie API ma to do siebie, że nie trzeba martwić się o front, wystarczy w backendzie stworzyć odpowiednie funkcje i v`oila.

Kolejną funkcjonalnością było dodanie formularzy do zarządzania danymi.

W Laravel tworzenie jest formularzy jest bardzo proste, wystarczy skorzystać z klasy Form (albo można to nazwać fasadą Form, ponieważ wszystkie metody znajdują się w klasie FormBuilder) np:

Form::open($options);

.. dane do formularza

Form::close();

$options to tablica z danymi do formularza, np.
['method'=> 'PUT', 'action' => ['ModelController@update', $id], 'class'=> 'form-inline']

Fasada Form zawiera w sobie funkcje, które pomagają w tworzeniu formularzy np:

label: Form::label('nazwa_pola', 'nazwa wyświetlana') ;
input: Form::text('nazwa_pola', 'wartość domyślna', $opcje);
pod $opcje można wstawić tablicę z ustawieniami naszego inputa np [‚class’ => ‚form-control’]

Wpis ten, na początku, miał dotyczyć checkboxów w formularzu,tworzenie checkboxa jest trywialne ;):
Form::checkbox('nazwa_pola', 'wartość');
schody zaczynają się, kiedy korzystamy z magii Laravela i dane zapisujemy na podstawie dostarczonej tablicy Request $request->all(), jak się orientujesz bądź nie, odznaczony checkbox nie jest wysyłany w poście do funkcji, a to oznacza, że w naszej tablicy $_POST czy obiekcie $request nie będzie wartości dla ‚nazwa_pola’, przeglądarka nie wyśle żadnej wartości dla tego pola, a to oznacza, że Laravel nie zaktualizuje pola w bazie danych.

Rozwiązaniem takiego zachowania jest dodanie pola hidden z podobną nazwą _PRZED_ checkboxem, czyli:
Form::hidden('nazwa_pola', 'domyślna_wartosc');
Form::checkbox('nazwa_pola', 'aktywna_wartosc');

Dzięki temu, bez względu na to, czy checkbox będzie zaznaczony czy odznaczony formularz zawsze wyśle pełną tablicę danych, a my nie musimy się martwić o sprawdzanie, czy dane pole istnieje, czy nie.

Ok, ale skoro zmieniłem tytuł notki na formularze w Laravel to opisze coś więcej, przy okazji się czegoś nauczę :).

Poza standardowymi inputami typu text, text_area czy hidden, są też radio, email, url, file, select czy password – pełna gama funkcji – więcej o nich można poczytać na stronie https://laravelcollective.com/docs/5.2/html

Rafath Khan

Rafath Khan - Problem Solver - nie ma czegoś takiego jak problem, są wyzwania. Od 1998 związany z Internetem, programista, projektant, twórca serwisów i aplikacji internetowych m.in Shoople.pl, PanShop.pl, UnikalneOpisy.pl. Masz problem? Pomogę CI go rozwiązać.

Może Ci się również spodoba