Formularze – LaravelCollective/html
Formularze za pomocą komponentu – LaravelCollective/html
W tym materiale pokażę jak obsługiwać formularze za pomocą komponentu LaravelCollective/html.
Link do dokumentacji: https://laravelcollective.com/docs
Konfiguracja LaravelCollective/html
- Pobieranbie i instalacja
- Odnajdujemy plik: composer.json
- W tablicy require dopisujemy:
"laravelcollective/html": "^6.0.3"
Powyższa linia oznacza, że do działania aplikacji – wymagany jest komponent o nazwie:
laravelcollective/html w wersji: ^6.0.3 - Następnie przechodzimy spowrotem do consoli w wprowadzamy polecenie:
composer update
polecenie to ma na celu sprawdzenie czy nie ma żadnych uaktualnień w pliku composer.json
względem zainstalowanej wersji. - Gdy wszystko już się zainstaluje powinniśmy ujrzeć komunikat:
Package manifest generated successfully.
- Konfiguracja
- Przechjodzimy do pliku: config/app.php
- W nim odnajdujemy tablicę: providers i na jej końcu dopisujemy:
Collective\Html\HtmlServiceProvider::class,
- Następnie w tym samym pliku odnajdujemy tablicę aliases i skolei na jej końcu dopisujemy:
'Form' => Collective\Html\FormFacade::class, 'Html' => Collective\Html\HtmlFacade::class,
- Zastosowanie
- Na wstępie udajmy się do pliku: routes\web.php a w nim stwórzmy link do formularza:
Route::get('/videos/create/', 'VideosController@create');
- Następnie przechodzimy do pliku: app/Http/Controllers/VideosController.php a w nim tworzymymetodę create
public function create()
{
return view('videos.create');
} - Otwieramy plik z formularzem: resources/views/videos/create.blade.php
Oczywiście możemy za pomocą poleceń:@extends('master')
Przypiąć się do głównego layoutu.
@section('content')
@endsection
Pierwszą zasadą jest zastąpienie znaczników form znacznikami{!! Form::open(['url'=>'videos', 'class'=>'form-horizontal']) !!} {!! Form::close() !!}
gdzie: po otwarci znacznika form możemy do niej dołączyć tablicę z parametrami. Pierwszy parametr znacznika oznacza przekierowanie, czyli co wydaży się po wysłan formularza. W moim przypdaku zostanie przekierowana do głównej strony z filmami. Drugi prametr, to clasy jakie chcę przypisać do mojego formularza.
Na końcu fomrularza oczywi ście znacznik zamykający formularz. - Wypełnijmy więc cały formularz:
{!! Form::label(‘title’, ‘Tytuł:’) !!}{!! Form::text(‘title’, null, [‘class’=>’form-control’]) !!}{!! Form::label(‘description’, ‘Opis:’) !!}{!! Form::textarea(‘description’, null, [‘class’=>’form-control’]) !!}{!! Form::label(‘url’, ‘URL filmu:’) !!}{!! Form::text(‘url’, null, [‘class’=>’form-control’]) !!}{!! Form::submit(‘Dodaj artykuł’, [‘class’=>’btn btn-primary’]) !!}
- Gdy mój formularz jest już gotowy należy udać się do pliku routes\web.php i tam stworze link
Route::post('/videos', 'VideosController@store');
- Zwróć uwagę, że w powyższym zapisie jest Route::post
- Następnie przechodzimy do pliku app/Http/Controllers/VideosController.php w nim modyfikujemy linie:
use Illuminate\Http\Request;
na
use Request;
- Oraz w tym sammym pliku tyworzymy metodę store
public function store()
gdzie 3 linia kodu pobiera wszystkie zapytania tego formularza i zapisuje ze w zmiennej $inpu. Następnie w linii 4 poprzez model uruchamiana jest medota create() z parametrem $input, która ma za zadanie zapisać w bazie danych zapisane wartości ze zmiennej $input. 5 linia przekierowuje do podstrony z filmami.
{
$input = Request::all();
Video::create($input);
return redirect('videos');
}
- Na wstępie udajmy się do pliku: routes\web.php a w nim stwórzmy link do formularza: