Problém
Přečetl jsem si dokumentaci na webu Laravel, Stack Overflow a Google, ale nejsem si jistý, zda rozumím rozdílu mezi nimi Route :: zdroj
a Route :: controller
.
Jedna odpověď, kterou jsem našel, řekla Route :: zdroj
byl pro CRUD. Nicméně s Route :: controller
můžeme dosáhnout stejné věci jako s Route :: zdroj
a můžeme určit pouze potřebné akce.
Vypadají jako sourozenci:
Route :: controller ('post', 'PostController');Route :: resource ('post', 'PostController');
Jak si můžeme vybrat, co použijeme? Jaký je nejlepší postup?
Řešení
Kontrolér RESTful Resource
Řadič prostředků RESTful nastaví některé výchozí trasy a dokonce je pojmenuje.
Route :: resource ('users', 'UsersController');Poskytne vám tyto pojmenované trasy:
Název trasy akce cesty slovesaGET / uživatelé indexují uživatele.index
ZÍSKAT / uživatelé / vytvořit vytvořit uživatele.vytvořit
POST / uživatelé ukládají uživatele.obchod
ZÍSKAT / uživatelé / uživatel zobrazit uživatele.ukázat
ZÍSKAT / uživatelé / uživatel / upravit úpravy uživatelů.Upravit
PUT | PATCH / uživatelé / user aktualizují uživatele.Aktualizace
DELETE / users / user zničit uživatele.zničit
A nastavili byste svůj ovladač něco takového (akce = metody)
třída UsersController rozšiřuje BaseControllerindex veřejné funkce ()
veřejná funkční show ($ id)
public function store ()
Můžete také zvolit, jaké akce budou zahrnuty nebo vyloučeny takto:
Route :: resource ('users', 'UsersController', ['only' => ['index', 'zobrazit']
]);
Route :: resource ('monkeys', 'MonkeysController', [
'except' => ['upravit', 'vytvořit']
]);
Dokumentace RESTful Resource Controller
Implicitní řadič
Implicitní řadič je flexibilnější. Budete přesměrováni na své metody řadiče na základě typu a názvu požadavku HTTP. Nemáte však pro sebe definované názvy tras a zachytí všechny podsložky pro stejnou trasu.
Route :: controller ('users', 'UserController');Vedlo by vás k nastavení řadiče s jakýmsi schématem RESTful pojmenování:
třída UserController rozšiřuje BaseControllerveřejná funkce getIndex ()
// ZÍSKEJTE požadavek na indexování
veřejná funkce getShow ($ id)
// získat požadavek na 'users / show / id'
veřejná funkce postStore ()
// POST request to 'users / store'
Implicitní dokumentace ovladače
Je dobrým zvykem použít to, co potřebujete, podle vašich preferencí. Osobně se mi nelíbí implicitní řadiče, protože mohou být špinavé, neposkytují jména a mohou být matoucí při použití php řemeslných tras. Obvykle používám řadiče RESTful Resource v kombinaci s explicitními trasami.
Druhý názor je, že možná nebudete chtít vytvořit příliš mnoho řadičů pro každou akci, která by zahrnovala všechny metody CRUD. V takovém případě použijte implicitní řadiče.