定义资源路由
Route::resource('demo', 'DemoController');
生成控制器
php artisan make:controller DemoController --resource --model=Demo
–resource
自动生成对应的方法
–model
指定model
路由对应表
伪造表单方法
因为 HTML 表单不能生成 PUT、 PATCH 或者 DELETE 请求,所以你需要添加一个隐藏的 _method 输入字段来伪造这些 HTTP 动作。辅助函数 method_field 可以帮你创建这个字段:
{{ method_field('PUT') }}
限制访问部分资源路由
Route::resource('users', 'UsersController', ['only' => ['show', 'update', 'edit']]);
Route::resource('topics', 'TopicsController', ['only' => ['index', 'create', 'store', 'update', 'edit', 'destroy']]);
本地化资源 URI
默认情况下,Route::resource
将会用英文动词创建资源 URI。如果需要本地化 create
和 edit
行为动作名,可以在 AppServiceProvider
的 boot
中使用 Route::resourceVerbs
方法实现:
use Illuminate\Support\Facades\Route;
/**
* 引导任何应用服务。
*
* @return void
*/
public function boot()
{
Route::resourceVerbs([
'create' => 'crear',
'edit' => 'editar',
]);
}
动作被自定义后,像 Route::resource(‘fotos’, ‘PhotoController’) 这样注册的资源路由将会产生如下的 URI:
/fotos/crear
/fotos/{foto}/editar
补充资源控制器
如果你想在默认的资源路由中增加额外的路由,你应该在 Route::resource 之前定义这些路由。否则由 resource 方法定义的路由可能会无意中优先于你补充的路由:
Route::get('photos/popular', 'PhotoController@method');
Route::resource('photos', 'PhotoController');
{tip} 记住保持控制器的专一性。如果你需要典型的资源操作之外的方法,可以考虑将你的控制器分成两个更小的控制器。
参考文档
https://learnku.com/docs/laravel/5.5/controllers/1296
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lzdong@foxmail.com