Problem
Jeg læste dokumentationen på Laravel-webstedet, Stack Overflow og Google, men jeg er ikke sikker på, at jeg forstår forskellen mellem Rute :: ressource
og Rute :: controller
.
Et svar, jeg fandt, sagde Rute :: ressource
var for CRUD. Dog med Rute :: controller
vi kan opnå det samme som med Rute :: ressource
og vi kan kun specificere de nødvendige handlinger.
De ser ud til at være som søskende:
Rute :: controller ('post', 'PostController');Rute :: ressource ('post', 'PostController');
Hvordan vi kan vælge, hvad vi skal bruge? Hvad er den bedste praksis?
Opløsning
RESTful ressource controller
En RESTful ressource controller opretter nogle standardruter til dig og navngiver dem endda.
Rute :: ressource ('brugere', 'UsersController');Giver dig disse navngivne ruter:
Verb Sti Handling Rute NavnGET / brugere indekserer brugere.indeks
GET / brugere / Opret Opret brugere.skab
POST / brugere gemmer brugere.butik
GET / brugere / bruger viser brugere.at vise
GET / brugere / bruger / rediger rediger brugere.redigere
PUT | PATCH / brugere / bruger opdater brugere.opdatering
SLET / brugere / bruger ødelægger brugere.ødelægge
Og du ville oprette din controller sådan noget (handlinger = metoder)
klasse UsersController udvider BaseControlleroffentligt funktionsindeks ()
offentlig funktionsvisning ($ id)
offentlig funktionsbutik ()
Du kan også vælge, hvilke handlinger der skal inkluderes eller udelukkes på denne måde:
Rute :: ressource ('brugere', 'BrugereController', ['only' => ['index', 'show']
]);
Rute :: ressource ('monkeys', 'MonkeysController', [
'undtagen' => ['rediger', 'opret']
]);
RESTful Resource Controller-dokumentation
Implicit controller
En implicit controller er mere fleksibel. Du bliver dirigeret til dine controller-metoder baseret på HTTP-anmodningstype og navn. Du har dog ikke defineret rutenavne til dig, og den fanger alle undermapper til den samme rute.
Rute :: controller ('brugere', 'UserController');Vil føre dig til at oprette controlleren med en slags RESTful navngivningsskema:
klasse UserController udvider BaseControlleroffentlig funktion getIndex ()
// FÅ anmodning om at indeksere
offentlig funktion getShow ($ id)
// få anmodning til 'brugere / show / id'
offentlig funktion postStore ()
// POST-anmodning til 'brugere / butik'
Implicit Controller-dokumentation
Det er god praksis at bruge det, du har brug for, alt efter dine præferencer. Jeg personligt kan ikke lide de implicitte controllere, fordi de kan være rodet, ikke give navne og kan være forvirrende, når du bruger php håndværkerruter. Jeg bruger typisk RESTful Resource-controllere i kombination med eksplicitte ruter.
Den anden opfattelse er, at du måske ikke vil oprette for mange controllere til hver handling, der vil omfatte alle CRUD-metoderne. I så fald skal du bruge de implicitte controllere.