我目前正在使用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'函数?
答案 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