Li os documentos no site do Laravel, Stack Overflow e Google, mas ainda não entendo a diferença entre Route::resource
e Route::controller
.
Uma das respostas disse que Route :: resource era para crud. No entanto, com Route :: controller, podemos realizar o mesmo que com Route :: resource e podemos especificar apenas as ações necessárias.
Eles parecem ser como irmãos:
Route::controller('post','PostController');
Route::resource('post','PostController');
Como podemos escolher o que usar? O que é uma boa prática?
Respostas:
Controlador de Recurso RESTful
Um controlador de recurso RESTful configura algumas rotas padrão para você e até os nomeia.
Fornece as seguintes rotas nomeadas:
E você configuraria seu controlador mais ou menos assim (actions = methods)
Você também pode escolher quais ações são incluídas ou excluídas da seguinte maneira:
Documentação do RESTful Resource Controller
Controlador implícito
Um controlador implícito é mais flexível. Você é roteado para os métodos do seu controlador com base no tipo e no nome da solicitação HTTP. No entanto, você não tem nomes de rotas definidos para você e ela captura todas as subpastas para a mesma rota.
O levaria a configurar o controlador com um tipo de esquema de nomeação RESTful:
Documentação implícita do controlador
É uma boa prática usar o que você precisa, conforme sua preferência. Pessoalmente, não gosto dos controladores implícitos , porque eles podem ser confusos, não fornecem nomes e podem ser confusos ao usar
php artisan routes
. Normalmente, uso controladores RESTful Resource em combinação com rotas explícitas.fonte
resource.edit
é mostrar uma visualização de edição, basicamente, o formulário para editar um recurso existente.resource.edit
eresource.create
normalmente são para uma interface do usuário ... renderizando uma exibição com formulários HTML. Esses formulários seriam PUT / POSTresource.update
eresource.store
respectivamente. Se você não estiver fazendo isso, poderá ignorá-los e se livrar dos métodos edit () e create () no seu controlador.Para o método do controlador de rota, temos que definir apenas uma rota. No método get ou post, temos que definir a rota separadamente.
E o método de recursos é usado para criar várias rotas para lidar com uma variedade de ações Restful.
Aqui a documentação do Laravel sobre isso.
fonte