如何在路线中指定“任何单词”?

时间:2017-11-13 22:12:23

标签: laravel

我想将以下操作附加到/ articles /<任何单词> / {article} .html:

public function show(Article $article)
{
   return $this->doShow($article);
}

如果我使用通配符(代替<任何单词>) - 例如{catalog} - Laravel将其插入到action的参数中,这是不可取的。我试过*符号,':任​​何',':任何?“ - 路线停止工作(我得到404)。我该怎么用?

1 个答案:

答案 0 :(得分:3)

路由并不总是必须绑定到模型。如果路由参数未绑定到模型,则字符串将发送到控制器。

“Laravel将其插入到操作的参数中,这是不合需要的”这是预期的行为,但如果您不需要它,则不必使用该变量。但如果是这种情况,您应该重新考虑您的URL方案。

Route::get('/articles/{term}/{article}.html', 'ArticleController@show');

public function show($term, Article $article)
{
   // $term will be a string wish whichever value is in the {term} section
   // $article will be the model that matches the key in the {article} section
   return $this->doShow($article);
}