Laravel krok po kroku - część 2 - Routing

Paweł Mysior
26 czerwca 2018

Podstawową funkcją każdej strony www jest przyjmowanie zapytań HTTP i przesyłanie z powrotem do przeglądarki odpowiedzi, najczęściej w formie kodu HTML. W pierwszej kolejności musimy zatem nauczyć się definiować ścieżki.

W Laravelu, ścieżki definiuje się w plikach znajdujących się w katalogu routes. W świeżej instalacji Laravela w tym katalogu znajdują się cztery pliki:

  • api.php
  • channels.php
  • console.php
  • web.php

Na początku interesuje nas plik routes/web.php, w którym definiuje się standardowe ścieżki aplikacji. Tak wygląda ten plik w świeżej instalacji:

Route::get('/', function () {
    return view('welcome');
});

Co robi ten kawałek kodu? Rejestruje ścieżkę. Gdy ktoś odwiedzi naszą stronę główną skrypt zwróci widok znajdujący się w pliku welcome.blade.php w katalogu resources/views. O widokach i silniku szablonów Blade będziecie mogli przeczytać w następnym poście.

Możemy sami zdefiniować np. taką ścieżkę:

Route::get('/contact', function () {
    return view('contact');
});

Pod adresem /contact skrypt zwróci widok znajdujący się w pliku resources/views/contact.blade.php.

Składnia metody Route::get() jest bardzo prosta. Jako jej pierwszy parametr przekazujemy koncówkę adresu, która ma być przechwycona. Jako drugi przekazujemy tak zwaną funkcję anonimową, która zwraca widok.

Warto zwrócić uwagę, że ukośnik (/) na początku pierwszego argumentu nie jest wymagany, moglibyśmy zdefiniować tę scieżkę w następujący sposób:

Route::get('contact', function () {
    return view('contact');
});

Zamiast funkcji anonimowej jako drugi argument możemy wskazać kontroler, który ma być użyty do obsługi ścieżki. Na przykład w ten sposób:

Route::get('user', 'UserController@index');

Pod adresem /user skrypt zwróci to co zwraca metoda index() znajdująca się w klasie UserController w pliku app/Http/Controllers/UserController.php.

Do tej pory używaliśmy metody get() do definiowania ścieżek. Ta metoda odpowiada na metodę GET protokołu HTTP. Mamy też do dyspozycji metodę, która odpowiada na metodę POST.

Route::post('/posts', 'PostController@store');

Są też dostępne metody put(), patch(), delete(), options(). Wszystkie odpowiadają metodom protokołu HTTP o tych samych nazwach.

Parametry

W ścieżce można też łatwo definiować parametery, na przykład:

Route::get('users/{id}', function ($id) {
    return 'User: ' . $id;
});

Możemy zdefiniować dowolną liczbę parametrów:

// routes/web.php
Route::get('posts/{post}/comments/{comment}', 'CommentController@show');

// app/Http/Controllers/CommentController.php
class CommentController extends Controller
{ 
    public function show($postId, $commentId)
    {
        return 'Comment: ' . $commentId . ' from post: ' . $postId;
    }
}

Parametry definiuje się spinając ich nazwy nawiasami klamrowymi. Nazwa parametru nie może zawierać myślinika (-). Parametry zostaną przekazane do funkcji w tej samej kolejności, w której zostały zdefiniowane. Nazwa parametrów nie ma znaczenia, chociaż najlepszą praktyką jest nazywać je tak samo w definicji ścieżki i w kontrolerze.

Parametr może być opcjonalny, wystarczy dodać znak zapytania (?) do jego definicji:

Route::get('movies/{category?}', function ($category = 'comedy') {
    return 'Category: ' . $category;
});

/**
 * /movies        => Category: comedy
 * /movies/action => Category: action
 */

W tej części tutoriala nauczyliśmy się podstaw definiowania ścieżek w Laravelu. W następnej części omówimy widoki i silnik szablonów Blade.

Wygodny hosting zapewnia duet DigitalOceanLaravel Forge.
Copyright © laravelpolska.com

Drogi Użytkowniku!

Dalsze korzystanie z serwisu bez zmiany ustawień dotyczących cookies w przeglądarce oznacza akceptację plików cookies, co będzie skutkowało zapisywaniem ich na Twoich urządzeniach przez serwis internetowy laravelpolska.com. Jeśli nie wyrażasz zgody na przyjmowanie cookies, prosimy o zmianę ustawień w przeglądarce lub o opuszczenie serwisu. więcej

Stosujemy pliki cookies (tzw. ciasteczka) i inne pokrewne technologie, które mają na celu:

  • dostosowanie zawartości stron internetowych Serwisu do Twoich preferencji oraz optymalizacji korzystania ze stron internetowych; w szczególności pliki te pozwalają rozpoznać Twoje urządzenie i odpowiednio wyświetlić stronę internetową, dostosowaną do Twoich indywidualnych potrzeb;
  • utrzymanie Twojej sesji w Serwisie (po zalogowaniu), dzięki czemu nie musisz na każdej podstronie Serwisu ponownie wpisywać loginu i hasła,
  • zapewnienie bezpieczeństwa podczas korzystania z Serwisu,
  • ulepszenie świadczonych przez nas usług poprzez wykorzystanie danych w celach analitycznych i statystycznych,
  • poznanie Twoich preferencji na podstawie sposobu korzystania z naszych serwisów.

Wykorzystanie cookies pozwala nam zapewnić maksymalną wygodę przy korzystaniu z naszego Serwisu poprzez zapamiętanie Waszych preferencji i ustawień na naszych stronach. Więcej informacji o zamieszczanych plikach cookie oraz o możliwości zmiany ustawień przeglądarki oraz polityce przetwarzania danych znajdziesz w polityce prywatności.

Masz możliwość samodzielnej zmiany ustawień dotyczących cookies w swojej przeglądarce internetowej. Z poziomu przeglądarki internetowej, z której korzystasz, możliwe jest zarządzanie plikami cookies. W najpopularniejszych przeglądarkach istnieje m.in. możliwość:

  • zaakceptowania obsługi cookies, co pozwala na pełne korzystanie z opcji oferowanych przez witryny internetowe;
  • zarządzania plikami cookies na poziomie pojedynczych, wybranych przez użytkownika witryn;
  • określania ustawień dla różnych typów plików cookies, na przykład akceptowania plików stałych, jako sesyjnych itp.;
  • blokowania lub usuwania cookies.

Akceptuję pliki cookies