Laravel命名路由参数无法正常工作

时间:2016-11-22 09:17:09

标签: php laravel laravel-5 laravel-routing

我目前正在使用Laravel 5.3,我有许多类似的路线。

Route::get('/news/create/{product}', 'NewsController@create')->name('news::create');

所以在我的刀片模板中使用route()函数就像这样:

{{route('news::create','car')}}

但生成的网址是

/news/create?car

不是必需的

/news/create/car

如果我把它放在一个数组中,就会发生同样的事情:

{{route('news::create',['car'])}}

如果我像这样给它一把钥匙:

{{route('news::create',['product'=>'car'])}}

我明白了:

/news/create?product=car

如何获取正确的url,以便将其作为参数传递给'create'函数?

2 个答案:

答案 0 :(得分:1)

首先,看一下你的路线命名。我认为命名一条像'news :: create'这样的路线并没有什么特别的错误,除了它是丑陋的,很可能被认为是不好的做法。我喜欢使用camel casing,这意味着我会使用像 createNews 这样的名称。回到旧代码部分工作会更容易,如果/当他们与你一起工作时,会阻止其他程序员刺伤你。

我们可以为路由命名的原因是,即使我们更改路由URI或控制器端点,名称也会保持静态。我们可以使用路由参数将变量传递给它。

Route::get('/news/create/{product}', array('as' => 'createNews', 'uses' => 'NewsController@create'));


route('createNews', ['product' => 'car']);

答案 1 :(得分:-1)

{{route('news::create',['product => 'car'])}} 应该解决你的问题。 Laravel使用命名路由,并期望一个带有键的数组作为带有值的名称。

在此处阅读所有相关信息:https://laravel.com/docs/5.3/redirects#redirecting-named-routes

相关问题