doulu6314
2017-10-23 19:27
浏览 240
已采纳

如何通过laravel中的路由名称获取路由URL模式?

So I have a route defined in my web.php, like so....

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

I am trying to make a function where I can get the string pattern for the URL, '/items/{id}/{slug}' from the route by calling it's name...

I assumed this would work.. but it doesn't (it tells me I'm missing the parameters id and slug).

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

I'm using Laravel 5.3.

图片转代码服务由CSDN问答提供 功能建议

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

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

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

我认为这样可行..但它没有(它告诉我我缺少参数id和slug)。 < pre> //应该将字符串'items / {id} / {slug}'分配给变量。 $ url_pattern = route('items.item');

我正在使用Laravel 5.3。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • douxia2053 2017-10-23 19:35
    最佳回答

    You can access the Route's uri as follows:

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

    You can always create a faux route. When you are invoking route(), one has to assume you know the params it expects.

    If you would like to get it as a string (to be used in JS for example), just pass the names of the params as the params. For example:

    $url_pattern = route('items.item', ['id' => '{id}', 'slug' => '{slug}']);
    // will generate:
    // items/{id}/{slug}
    
    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题