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
Najnowsze komentarze