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
    }
}