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

How can I get a route url pattern by route name in laravel?

所以我在 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。

您可以按如下方式访问 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}

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

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

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