【问题标题】:What are some use cases of Named Routes in Laravel?Laravel 中有哪些命名路由的用例?
【发布时间】:2023-03-27 01:24:01
【问题描述】:

看了documentation之后,我仍然对Laravel中的命名路由有一个模糊的概念。

你能帮我理解一下吗?

Route::get('user/profile', function () {
    //
})->name('profile');
Route::get('user/profile', 'UserProfileController@show')->name('profile');

上面写着:

为给定路由指定名称后,您可以在通过全局路由功能生成 URL 或重定向时使用该路由的名称

我不明白句子的第二部分是什么意思,关于生成 URL 或重定向。

在上面的例子中,profile 生成的 URL 是什么?我将如何使用它?

【问题讨论】:

  • 在您的应用程序中(无论它是否在视图、控制器等中),我建议您只引用命名路由而不是实际的 URL。如果您随后需要更改某些请求的 URL,它将自动在任何地方解析为正确的 URL。如果您在应用程序中对 URL 进行硬编码,则需要在使用过的任何地方更新 URL。
  • 在您的示例中,route('profile') 将返回 user/profile,因为它的路由名称为 profile

标签: php laravel routing


【解决方案1】:

在为路由添加名称后,您可以使用 route() 助手创建 url。 现在可以在您的应用程序中使用它。

例如,在您的刀片模板中,这可能如下所示:

{{ route('profile') }}

这将使用应用程序 url 和路由路径来创建一个 url。

【讨论】:

  • @MagnusEriksson 了解并感谢您的补充。只是举例说明如何使用它。
【解决方案2】:

看起来是这样的:

命名路由示例name('store');:

Route::get('/store-record','YourController@function')->name('store');

store 是这里的命名路由。调用它使用route('store')

定义另一种类型的路线。这不是命名路线:

Route::get('/store-record','YourController@function')

您可以使用{{ url('/store-record') }}访问此路由

希望对你有帮助

【讨论】:

    【解决方案3】:

    最好的资源就在这里:https://laravel.com/docs/5.8/routing#named-routes

    您认为其中一个常见用例。假设您的发布请求转到特定路线,基本上没有命名路线,您可以像这样简单地存储任务

    action="/task"
    

    但是比如说你需要更新到 /task/store 的路由,你需要在任何使用路由的地方更新它。

    但考虑到您使用了命名路线

    Route::post('/task', 'TaskController@store')->name('task.store'); 
    

    通过命名路由,您可以在视图中使用这样的路由:

    action="{{route('task.store')}}"
    

    现在,如果您选择更新您的路线,您只需在路线文件中进行更改并将其更新为您需要的任何内容。

    Route::post('/task/now/go/here', 'TaskController@store')->name('task.store');
    

    如果您需要将参数传递给路由,请将其作为参数传递给路由助手,如下所示:

    route('task.edit', 1), // in resource specific example it will output /task/1/edit 
    

    所有视图示例均使用刀片模板。

    【讨论】:

    • 一个不同的问题,但我想知道,为什么不直接使用name('task') 而不是name('task.store')?这只是 Laravel 中的一个约定,用于编写更简洁的代码吗?
    • @tadadadadi 我使用了 laravel 的资源约定。基本上,一个 laravel 资源由 5 条路线组成。对于任务资源,如 task.index、task.create、task.store、task.update、task.destroy。每个显示所有任务,显示表单分别创建任务、存储任务、更新任务、删除任务。所以是的,这只是惯例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 2020-12-04
    • 2017-03-06
    • 1970-01-01
    • 2013-12-26
    相关资源
    最近更新 更多