laravel

Laravel - Routeresource vs Routecontroller

Laravel - Routeresource vs Routecontroller

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 slovesa
GET / 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 BaseController
index 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 BaseController
veř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.

Hry Vulkan pro uživatele Linuxu
Vulkan pro uživatele Linuxu
S každou novou generací grafických karet vidíme, že vývojáři her posouvají hranice grafické věrnosti a přibližují se k fotorealismu. Ale navzdory vešk...
Hry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Vytvoření vlastní simulace dopravy může být zábavné, uvolňující a mimořádně lákavé. Proto se musíte ujistit, že vyzkoušíte co nejvíce her, abyste našl...
Hry Výukový program OpenTTD
Výukový program OpenTTD
OpenTTD je jednou z nejpopulárnějších her pro obchodní simulaci. V této hře musíte vytvořit skvělé dopravní podnikání. Začnete však na začátku kolem r...