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



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

衣柜CMS用途:

/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));
     }
   )    
); 

但它没有影响;我四处寻找类似的操作,但一无所获。不确定这是否只是一个语法错误,或者我完全偏离了我正在尝试做的事情

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

谢谢!

我认为

您可以做这样的事情,只需使用您准备好的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();
    }
));

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

最新更新