Php 在索引中具有动态可选路由参数
我使用: 在我的路线中,将所有路线链接到我的控制器 我的控制器中有一个Php 在索引中具有动态可选路由参数,php,laravel,Php,Laravel,我使用: 在我的路线中,将所有路线链接到我的控制器 我的控制器中有一个getIndex()函数,在我转到“/home”时执行 我有一个案例,我想路由到“/home/slug”,但并不总是这样 我尝试使用getIndex($slug),但它总是要求“/home/index/{slug?}”。我不希望出现索引。在文档中,使用隐式控制器是不可能的(因为它似乎强制使用RESTFUL模式) 但您可以为此创建一条新路线: Route::controller('home', 'HomeController')
getIndex()
函数,在我转到“/home”时执行
我有一个案例,我想路由到“/home/slug”,但并不总是这样
我尝试使用
getIndex($slug)
,但它总是要求“/home/index/{slug?}”。我不希望出现索引。在文档中,使用隐式控制器是不可能的(因为它似乎强制使用RESTFUL模式)
但您可以为此创建一条新路线:
Route::controller('home', 'HomeController');
编辑:正如Steve所指出的,控制器方法必须在get方法之后,这样一个方法就不会覆盖另一个方法。亚瑟的答案是:
Route::get('home/{slug}','HomeController@slugedIndex');
Route::controller('home', 'HomeController');
尽管它不起作用,因为在“home/”之后写的任何东西现在都将进入第一条路径(和HomeController@slugedIndex)
不过我找到了一个解决办法。我在routes.php中取出了路线:
Route::get('home/{slug}','HomeController@slugedIndex');
Route::controller('home', 'HomeController');
然后在我的HomeController中,我使用了在控制器中找不到方法时调用的
以下是缺少的方法:
Route::controller('home', 'HomeController');
感谢@Arthur Samacos的回答,它几乎可以工作,但我需要在设置控制器路由之前设置get路由,否则Laravel找不到关联的方法(查看隐式控制器方法)。正确的代码:
Route::get('home/{slug}','HomeController@slugIndex'); 路由::控制器(“主”、“主控制器”)代码>谢谢,我将更改答案以避免此问题。抱歉@Arthur Samacos,但它仍然不起作用。我找到了解决办法,我会回答的。
public function missingMethod($parameters = array())
{
$sSlug = is_string($parameters) ? $parameters : '';
$oObject = Object::where('slug', $sSlug)->first();
if ($oObject) {
// slug code
}
else {
// 404 code
}
}