7 资源控制器
创建命令
# 创建资源控制器
$ php artisan make:controller BlogController --resource
# 创建接口资源控制器
$ php artisan make:controller BlogController --api
路由设置
Route::resource('blogs', 'BlogController'); // 设置单个资源路由
Route::resources([ // 批量设置资源路由
'blogs' => 'BlogController',
]);
Route::resource('blogs', 'BlogController') // 只开放index和show方法的路由
->only(['index', 'show']);
Route::resource('index', 'BlogController') // 开放除了index和show方法的其他路由
->except(['index', 'show']);
Route::apiResource('blogs', 'BlogController'); // 设置单个接口资源路由(不包含表单显示页)
Route::apiResources([ // 批量设置接口资源路由(不包含表单显示页)
'blogs' => 'BlogController',
]);
资源路由路由示例
8 资源嵌套、浅嵌套、自定义
路由设置
Route::resource('blogs.commonts', 'CommontController'); // 资源嵌套
Route::resource('blogs.commonts', 'CommontController'); // 资源浅嵌套
->shallow();
Route::resource('blogs.commonts', 'CommontController'); // 命名自定义, 多个路由名设置可参考多资源设置
->name('index', 'blog.c.index');
Route::resource('blogs.commonts', 'CommontController'); // 参数名称自定义
->parameters([
'blogs' => 'bid',
'comments' => 'cid',
]);
资源嵌套路由
资源浅嵌套路由
9 表单伪造和CSRF保护
csrf
post提交的时添加csrf的token设置
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
<!-- 在blade模板中也可直接使用blade方法 -->
@csrf
表单提交伪造
<input type="hidden" name="_method" value="put" /> <!-- 提交时候请求方式会显示为PUT -->
<!-- 在blade模板中也可直接使用blade方法 -->
@method('put')
csrf 白名单设置
修改文件为 app/Http/Middleware/VerifyCsrfToken.php
protected $except = [
//
'http://www.abc.com', // 外部链接
'/api/*', // 通配内部链接
'/api/xxx', // 某一内部链接
route('xxx') // 某一内部链接
];