Laravel-资源路由

  1. 定义资源路由
  2. 生成控制器
  3. 路由对应表
  4. 伪造表单方法
  5. 限制访问部分资源路由
  6. 本地化资源 URI
  7. 补充资源控制器

定义资源路由

Route::resource('demo', 'DemoController');

生成控制器

php artisan make:controller DemoController --resource --model=Demo

–resource
自动生成对应的方法

–model
指定model

路由对应表

laravel-route-resource

伪造表单方法

因为 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。如果需要本地化 createedit 行为动作名,可以在 AppServiceProviderboot 中使用 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

×

喜欢就点赞,疼爱就打赏