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

  1. Pobieranbie i instalacja
    1. Odnajdujemy plik: composer.json
    2. 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

    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.

    4. Gdy wszystko już się zainstaluje powinniśmy ujrzeć komunikat:
      Package manifest generated successfully.
  2. Konfiguracja
    1. Przechjodzimy do pliku: config/app.php
    2. W nim odnajdujemy tablicę: providers i na jej końcu dopisujemy:
      Collective\Html\HtmlServiceProvider::class,
    3. 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,
  3. Zastosowanie
    1. Na wstępie udajmy się do pliku: routes\web.php a w nim stwórzmy link do formularza:
      Route::get('/videos/create/', 'VideosController@create');
    2. Następnie przechodzimy do pliku: app/Http/Controllers/VideosController.php a w nim tworzymymetodę create public function create()
      {
      return view('videos.create');
      }
    3. Otwieramy plik z formularzem: resources/views/videos/create.blade.php
      Oczywiście możemy za pomocą poleceń: @extends('master')
      @section('content')
      @endsection
      Przypiąć się do głównego layoutu.
      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.

    4. 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’]) !!}


    5. 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');
    6. Zwróć uwagę, że w powyższym zapisie jest Route::post
    7. Następnie przechodzimy do pliku app/Http/Controllers/VideosController.php w nim modyfikujemy linie:
      use Illuminate\Http\Request;

      na

      use Request;
    8. Oraz w tym sammym pliku tyworzymy metodę store
      public function store()
      {
      $input = Request::all();
      Video::create($input);
      return redirect('videos');
      }
      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.