Problem
Jeg leste dokumentasjonen på Laravel -nettstedet, Stack Overflow, og Google, men jeg er ikke sikker på at jeg forstår forskjellen mellom Rute :: Ressurs
og Rute :: kontroller
.
Ett svar jeg fant sa Rute :: Ressurs
var for rå. Imidlertid med Rute :: kontroller
Vi kan oppnå det samme som med Rute :: Ressurs
Og vi kan bare spesifisere de nødvendige handlingene.
De ser ut til å være som søsken:
Rute :: Controller ('Post', 'PostController');Hvordan vi kan velge hva vi skal bruke? Hva er den beste praksisen?
Løsning
Avslappende ressurskontroller
En avslappende ressurskontroller setter opp noen standardruter for deg og navngir dem til og med dem.
Rute :: Ressurs ('brukere', 'UsersController');Gir deg disse navngitte rutene:
Verb Path Action Route NavnOg du vil sette opp kontrolleren din noe slikt (handlinger = metoder)
Klassebrukere Controller utvider BaseControllerDu kan også velge hvilke handlinger som er inkludert eller ekskludert slik:
Rute :: Ressurs ('brukere', 'UsersController', [RESTFUL RESSURS CONTROLLER Dokumentasjon
Implisitt kontroller
En implisitt kontroller er mer fleksibel. Du blir dirigert til kontrollmetodene dine basert på HTTP -forespørselstypen og navnet. Du har imidlertid ikke rutenavn definert for deg, og det vil fange alle undermapper for samme rute.
Rute :: Controller ('brukere', 'UserController');Vil føre deg til å sette opp kontrolleren med et slags avslappende navneskjema:
klasse UserController utvider BaseControllerImplisitt kontrollerdokumentasjon
Det er god praksis å bruke det du trenger, i henhold til din preferanse. Jeg personlig liker ikke de implisitte kontrollerne, fordi de kan være rotete, ikke oppgi navn og kan være forvirrende når du bruker PHP Artisan -ruter. Jeg bruker vanligvis avslappende ressurskontrollere i kombinasjon med eksplisitte ruter.
Den andre oppfatningen er at du kanskje ikke vil lage for mange kontrollere for hver handling, som vil omfatte alle CRUD -metodene. I så fall kan du bruke implisitte kontroller.