Laravel 4路由:修改路由中的参数值

时间:2013-09-28 04:26:35

标签: laravel laravel-4

我正在使用名为WardrobeCMS(http://wardrobecms.com)的Laravel CMS,我正在尝试修改路由以使用我现有的cms路由,因此我可以移植。

WardrobeCMS使用:

/post/{slug}

我希望保留现有的内容:

/{year}/{month}/{slug}

如果我可以将我的3部分slug组合成一个{slug},我可以避免覆盖很多核心功能,所以这是我认为最好的方向

我在尝试:

Route::get('{year}/{month}/{slug}', array(
     'uses' => $wardrobeControllers.'PostController@show',
     'as' => 'wardrobe.posts.show',
     function($year, $month, $slug)
     {
        return $slug = implode('/', array($year, $month, $slug));
     }
   )    
); 

但它没有任何影响;我环顾四周寻找类似的手术,却一无所获。不确定这只是一个语法错误,还是我完全偏离了我正在尝试做的事情

想知道过滤器之前是否还不是答案,但还没有做任何工作。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您可以执行此类操作,只需使用您准备好的params

创建另一个请求
Route::get('{year}/{month}/{slug}', array(
    'uses' => $wardrobeControllers.'PostController@show',
    'as' => 'wardrobe.posts.show',
    function($year, $month, $slug) {
       // build the params
       $args =  = implode('/', array($year, $month, $slug));

       // create a new request and dispatch it
       $request = Request::create('your-route', 'GET', $args);
       return Route::dispatch($request)->getContent();
    }
));

但是你必须创建一个类似的路线,所以它会被发射到目标,但这只是一个意见,因为现在仍然不确定你正在尝试做什么,只是猜测。