Czytałem dokumenty w witrynie Laravel, Stack Overflow i Google, ale nadal nie rozumiem różnicy między Route::resource
i Route::controller
.
Jedna z odpowiedzi mówi, że Route :: resource dotyczy crud. Jednak z Route :: controller możemy osiągnąć to samo, co z Route :: resource i możemy określić tylko potrzebne akcje.
Wydają się być jak rodzeństwo:
Route::controller('post','PostController');
Route::resource('post','PostController');
Jak możemy wybrać, czego użyć? Co to jest dobra praktyka?
Odpowiedzi:
Kontroler zasobów RESTful
Relaksującego kontroler zasobów ustanawia niektórych trasach domyślnych dla ciebie, a nawet nazw nich.
Podaje te nazwane trasy:
Skonfigurowałbyś swój kontroler mniej więcej tak (akcje = metody)
Możesz także wybrać, które akcje są uwzględniane lub wykluczane w następujący sposób:
Dokumentacja kontrolera zasobów RESTful
Niejawny kontroler
Niejawny kontroler jest bardziej elastyczny. Zostaniesz przekierowany do metod kontrolera na podstawie typu i nazwy żądania HTTP. Jednak nie masz zdefiniowanych dla siebie nazw tras i spowoduje to przechwycenie wszystkich podfolderów dla tej samej trasy.
Doprowadziłoby cię do skonfigurowania kontrolera z rodzajem schematu nazewnictwa RESTful:
Dokumentacja niejawnego kontrolera
Dobrą praktyką jest używanie tego, czego potrzebujesz, zgodnie z własnymi preferencjami. Osobiście nie lubię kontrolerów Niejawnych , ponieważ mogą być bałaganiarskie, nie podają nazw i mogą być mylące podczas używania
php artisan routes
. Zwykle używam kontrolerów zasobów RESTful w połączeniu z jawnymi trasami.źródło
resource.edit
służy do pokazania widoku edycji, w zasadzie formularza do edycji istniejącego zasobu.resource.edit
iresource.create
są zwykle przeznaczone dla interfejsu użytkownika ... renderującego widok za pomocą formularzy HTML. Te formularze będą PUT / POST odpowiednio doresource.update
iresource.store
. Jeśli tego nie robisz, możesz po prostu je zignorować i pozbyć się metod edit () i create () w kontrolerze.W przypadku metody kontrolera trasy musimy zdefiniować tylko jedną trasę. W metodzie get lub post musimy osobno zdefiniować trasę.
Metoda zasobów jest używana do tworzenia wielu tras do obsługi różnych działań Restful.
Tutaj dokumentacja Laravel na ten temat.
źródło