Laravel - routeresource vs

Laravel - routeresource vs

Problem

Przeczytałem dokumentację na stronie Laravel, Stack Refflow i Google Jednak nie jestem pewien, czy rozumiem różnicę między Trasa :: Zasób I Trasa :: kontroler.

Jedna odpowiedź, którą znalazłem Trasa :: Zasób był dla Crud. Jednak z Trasa :: kontroler Możemy osiągnąć to samo, co w Trasa :: Zasób i możemy określić tylko potrzebne działania.

Wydają się być jak rodzeństwo:

Trasa :: „Post”, „PostController”);
Trasa :: „post”, „postcontroller”);

Jak możemy wybrać, czego użyć? Jaka jest najlepsza praktyka?

Rozwiązanie

RESTful Resource Controller

Kontroler RESTful zasobów konfiguruje dla Ciebie niektóre domyślne trasy, a nawet je nazywa.

Trasa :: „użytkownicy”, „UsersController”);

Daje ci te nazwane trasy:

Czasownik ścieżka Akcja nazwa trasy
Pobierz /użytkownicy indeksuj użytkowników.indeks
Pobierz /Użytkownicy /Utwórz Utwórz użytkowników.tworzyć
Post /Użytkownicy przechowują użytkowników.sklep
Get /Users /User Pokaż użytkownikom.pokazywać
Get/Users/User/edytuj edytuj użytkowników.edytować
PUTH | Patch /Users /User Aktualizacja użytkowników.aktualizacja
Usuń /Users /User zniszcz użytkowników.zniszczyć

I skonfigurujesz swój kontroler coś takiego (aktywa = metody)

Klasa Usercontroller rozszerza Basecontroller
indeks funkcji publicznej ()
Pokaż funkcję publiczną ($ id)
public Funkcja Store ()

Możesz także wybrać, jakie działania są uwzględnione lub wykluczone w ten sposób:

Trasa :: „użytkownicy”, „UsersController”, [
„tylko” => [„indeks”, „show”]
]);
Trasa :: „Monkeys”, „Monkeyscontroller”, [
„Z wyjątkiem” => [„edytuj”, „Utwórz”]
]);

Dokumentacja kontrolera zasobów RESTFUL

Kontroler domniemany

Niejawny kontroler jest bardziej elastyczny. Zostajesz kierowany do metod kontrolera na podstawie typu i nazwy żądania HTTP. Jednak nie masz dla ciebie zdefiniowanych nazw tras i złapie wszystkie podfoldery dla tej samej trasy.

Trasa :: „Użytkownicy”, „UserController”);

Doprowadziłby cię do skonfigurowania kontrolera z rodzajem programu RESTful Naming:

Klasa UserController rozszerza Basecontroller
funkcja publiczna getIndex ()

// Uzyskaj żądanie indeksu

Funkcja publiczna Getshow ($ id)

// Uzyskaj żądanie „Users/show/id”

funkcja publiczna poststore ()

// Publikuj żądanie „Użytkownicy/przechowywanie”

Dokumentacja niejawnego kontrolera
Dobrą praktyką jest korzystanie z tego, czego potrzebujesz, zgodnie z preferencjami. Osobiście nie lubię ukrytych kontrolerów, ponieważ mogą być nieuporządkowane, nie podawaj nazwisk i mogą być mylące podczas korzystania z tras rzemieślniczych PHP. Zazwyczaj używam kontrolerów zasobów RESTful w połączeniu z jawnymi trasami.

Inną opinią jest to, że możesz nie chcieć tworzyć zbyt wielu kontrolerów dla każdego działania, które zawierałyby wszystkie metody CRUD. W takim przypadku użyj ukrytych kontrolerów.