laravel

Laravel - Routeresource vs Routecontroller

Laravel - Routeresource vs Routecontroller

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 Navn
GET / 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 BaseController
offentligt 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 BaseController
offentlig 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.

Sådan bruges AutoKey til at automatisere Linux-spil
AutoKey er et desktopautomatiseringsværktøj til Linux og X11, programmeret i Python 3, GTK og Qt. Ved hjælp af dets scripting og MACRO-funktionalitet ...
Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...
Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...