【问题标题】:Naming Laravel view routes when using resource routes使用资源路由时命名 Laravel 视图路由
【发布时间】:2017-08-22 01:46:55
【问题描述】:

问题

我整天都在努力寻找一个好的约定来在 Laravel (5.4)命名查看路线
假设我正在使用资源路由。但是我还需要声明很多查看路线,声明这些路线的安全和最佳做法是什么?

示例:

我有以下资源路线:

GET /tickets/12/messages
GET /tickets/12/messages/5
POST /tickets/12/messages
PUT /tickets/12/messages/5
PATCH /tickets/12/messages/5
DELETE /tickets/12/messages/5

我还需要定义路由:

  • 显示视图以编辑特定消息。
  • 显示视图以将特定消息添加到工单。
  • 显示创建特定工单的视图。
  • 显示视图以显示系统中的所有工单。
  • 显示视图以显示属于特定用户的所有工单。

还有很多其他的......问题是:你会如何定义我描述的路线?
非常感谢!

【问题讨论】:

    标签: php laravel routes


    【解决方案1】:

    Laravel 为 CRUD 构建路由的方法是使用 Route::resource() 方法:

    Route::resource('tickets', 'TicketController');
    

    您可以使用php artisan route:list 命令查看生成的路由列表。

    https://laravel.com/docs/5.4/controllers#resource-controllers

    【讨论】:

    • 好的,先生,假设我使用 Route::resource 方法。您能否为仅返回视图的路由建议一个健壮的命名约定?
    • @NelutuFona resource() 将为您命名所有创建的路线。您可以在使用php artisan route:list 命令生成的列表中看到路由名称。或者单击我的答案中的链接,那里有一个表格显示 Laravel 用于 CRUD 的路线名称。
    【解决方案2】:

    恕我直言,您可以尝试使用嵌套资源:

    Route::resource('tickets.messages', 'TicketMessageController');
    Route::resource('users.tickets', 'UserTicketController');
    

    他们生成这种路线:

    tickets/{ticket}/messages/{message} 
    users/{user}/tickets/{ticket} 
    

    在控制器中,您将在函数调用中注入两个参数,即:

    class TicketMessageController
    
    // show message for ticket
    public function show(Ticket $ticket, Message $message)
    
    // show all messages for a ticket
    public function index(Ticket $ticket)
    

    它的 documented 仅适用于 Laravel 5.1,但它适用于 5.4

    与往常一样,您可以使用php artisan route:list查看所有生成的路由

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 2019-06-30
      • 2017-02-12
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多