Laravel 4 définissant les contrôleurs RESTful
Donc, je suis nouveau sur le Laravel cadre de la v4 et vous demandez-vous quel est le moyen de créer et d'utiliser Reposant contrôleurs. La lecture par le biais de la documentation, je suis un peu confus quant à la différence entre Reposant contrôleurs et contrôleurs de Ressources.
Lors de la définition d'une bonne contrôleur, selon les docs, il suggère de faire ce qui suit dans routes.php
:
Route::controller('posts', 'PostController');
Dans le PostController
n'avons-nous définir les méthodes de la classe en préfixant le nom de la méthode avec le verbe HTTP nous aimerions utiliser? Par exemple:
class PostController extends \BaseController {
public function getIndex()
{
//
}
}
Cependant, il montre aussi une façon de créer des Ressources contrôleurs de la routes.php
fichier comme suit:
Itinéraire::ressource('posts', 'PostController');
Et dans PostController.php
nous de définir des méthodes sans préfixant avec le verbe HTTP.
class PostController extends \BaseController {
public function index()
{
//
}
}
Quelle est la différence entre les deux? Et quand allons-nous utiliser l'un plutôt que l'autre, et pourquoi?
Aussi, devrions-nous utiliser Route::controller('posts', 'PostController');
ou Route::resource('posts', 'PostController');
pour passer de routage pour le contrôleur, ou devrions-nous définir chaque route manuellement, comme ci-dessous:
Route::get('/users', 'UserController@index');
Route::get('/users/create', 'UserController@create');
Route::post('/users', 'UserController@store');
Route::get('/users/{id}', 'UserController@show');
Route::get('/users{id}/edit', 'UserController@edit');
Route::put('/users', 'UserController@update');
Route::delete('/users', 'UserController@destroy');
source d'informationauteur Iain
Vous devez vous connecter pour publier un commentaire.
Prendre ce contrôleur comme exemple:
Dans votre parcours, si vous avez
Et exécuter
Vous aurez:
Laravel inspecte le contrôleur et génère des itinéraires basés sur les méthodes qu'il trouve, automatiquement.
Mais si vous ne
Vous obtiendrez cette voie d'inscription:
Pas de deviner, Laravel utilise un prédéfinie CRUD liste des itinéraires, vous pouvez supprimer certaines de ces routes, mais il ne sera pas inspecter votre contrôleur de construire des routes pour vos méthodes.
Vous de décider ce qui est mieux pour vous. Mais, habituellement, si votre contrôleur est un CRUD, Itinéraire::resource() est un bon début, sinon c'est que vous pouvez utiliser Route::controller() ou de créer vos itinéraires manuellement.
EDIT:
Il n'y pas vraiment pourquoi ou pourquoi pas un autre, c'est juste une question de design et de choix. Certains utilisent aucun d'entre eux, jamais. C'est juste chapeau
Route::resource()
suit les Rails de chemin de routage: http://guides.rubyonrails.org/routing.html.À l'aide de
Route::resource()
vous n'avez pas besoin de créer de toutes ces méthodes, mais vous vous retrouverez avec une liste de inutile itinéraires, parce que Laravel toujours créer tous par défaut, à moins que vous n':Et votre liste d'itinéraires de montrer que l'index et afficher les actions.
Aussi, si vous avez besoin d'autres voies, à l'aide de
Route::resource()
vous aurez à construire manuellement ou de travailler un peu de magie pour rendre automatique pour tous vos ingénieux routes. À l'aide deRoute::controller()
tout est automatique, à chaque fois que vous ajoutez une nouvelle méthode, une nouvelle route est créé pour vous.Encore une fois, si vous avez un contrôleur CRUD à construire, à commencer par l'aide de
Route::resource()
. Sinon, pensez aux avantages de l'un ou l'autre dans votre cas particulier.EDIT2:
C'est un excellent article, à partir de Phil Esturgeon (PyroCMS et PHP-FIG), sur les avantages de créer manuellement tous vos itinéraires: http://philsturgeon.co.uk/blog/2013/07/beware-the-route-to-evil.
@Antonio réponse est bonne. Permettez-moi de dire quelque chose de semblable et important un peu plus concise. Dans routes.php:
À l'aide de la méthode rend Laravel assumer CRUD fonctionnalité et il ne regarde que pour ses six ans, pré-faites méthodes CRUD: index, de créer, de stocker, d'afficher, de détruire, etc. Il ne sera pas "voir" les autres, de nouvelles méthodes que vous créez.
À l'aide de la méthode de contrôleur vous permet de créer des méthodes personnalisées/pages. Laravel semble, quand vous la faire précéder de la méthode/nom de la page avec un verbe HTTP. Dans votre XxxxController.php: