【问题标题】:How can I get a route url pattern by route name in laravel?如何在 laravel 中通过路由名称获取路由 url 模式?
【发布时间】:2018-04-04 10:57:30
【问题描述】:

所以我在 web.php 中定义了一个路由,就像这样......

Route::any('/items/{id}/{slug}', 'Items\ItemController@item')->name('items.item');

我正在尝试创建一个函数,我可以通过调用它的名称从路由中获取 URL 的字符串模式“/items/{id}/{slug}”...

我认为这会起作用..但它没有(它告诉我我缺少参数 id 和 slug)。

// Should assign the string 'items/{id}/{slug}' to the variable.
$url_pattern = route('items.item');

我正在使用 Laravel 5.3。

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.3


    【解决方案1】:

    您可以通过以下方式访问Route 的 uri:

    $url_pattern = app('router')->getRoutes()->getByName('items.item')->uri;
    var_dump($url_pattern);
    // will return:
    // "items/{id}/{slug}"
    

    您总是可以创建一个人造路线。当您调用route() 时,必须假设您知道它所期望的参数。

    如果您想将其作为字符串获取(例如在 JS 中使用),只需将参数的名称作为参数传递即可。例如:

    $url_pattern = route('items.item', ['id' => '{id}', 'slug' => '{slug}']);
    // will generate:
    // items/{id}/{slug}
    

    【讨论】:

    • 很奇怪,这应该可以工作....但我仍然收到 Missing required parameters 错误。
    【解决方案2】:

    需要在router函数中添加参数,例如:

    $url_pattern = route('items.item', ['id' => $id, 'slug' => $slug]);
    

    https://laravel.com/docs/5.5/routing#named-routes

    【讨论】:

      猜你喜欢
      • 2018-04-30
      • 2016-06-15
      • 2018-05-16
      • 2012-12-25
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 2014-08-26
      相关资源
      最近更新 更多