带有可选url $ param(s)的命名路由 - Laravel 4

jak*_*ris 4 laravel laravel-4

我遇到了一些与L4(可能是symfony2?)路由的怪癖,我似乎无法在网上或在精彩的Code Bright中找到任何资源,并在IRC中显得空洞.

我正在尝试通过控制器使用带有命名路径的可选参数,但在加载视图时会收到错误.

路线:

Route::get('/topic/{topicID?}', array(
    'as'    => 'topicDetails',
    'uses'  => 'TopicController@showTopic'
));
Run Code Online (Sandbox Code Playgroud)

控制器:

class TopicController extends BaseController {

    public function showTopic($topicID = null)
    {
        $data['topicID'] = $topicID;
        return View::make('topic_view', $data);
    }
}
Run Code Online (Sandbox Code Playgroud)

视图

<a href="{{ route('topicDetails') }}">XXX</a>
Run Code Online (Sandbox Code Playgroud)

错误:

Parameter "topicID" for route "topicDetails" must match "[^/]++" ("" given) to generate a corresponding URL.
Run Code Online (Sandbox Code Playgroud)

我假设这并没有将null价值传递给$param我,但我对L4不太熟悉,弄清楚为什么它不起作用,而且我已经耗尽了我所有的资源.

任何线索将不胜感激谢谢!

Lau*_*nce 11

这个

<a href="{{ route('topicDetails') }}">XXX</a>
Run Code Online (Sandbox Code Playgroud)

应该

<a href="{{ route('topicDetails', null) }}">XXX</a>
Run Code Online (Sandbox Code Playgroud)