Laravel Web路由变量未按预期返回

时间:2017-12-09 12:27:05

标签: php routes arguments laravel-5.3 url-parameters

我有以下路线:

    Route::get('/web/{cat_id?}/{post_type}','WebPostsController@index')
->where('post_type', '(pictures|videos|links|companies)')
->name('post_index');

控制器文件:

 public function index($post_type,$post_id = null,$cat_id = null)
    {

        dd($post_type);
}

访问网址/ public / web / 15 / videos时 它返回'15',它返回{cat_id?}值时返回{post_type}值(视频)。

1 个答案:

答案 0 :(得分:2)

传递给动作的变量必须遵循路线中的定义 也就是说,在您的情况下,您首先需要cat_id,然后是post_type,这意味着您必须将方法定义为:

public function index($cat_id, $post_type) { }

此外,我希望您仍然会遇到一些问题,因为您不能拥有可选参数,然后是强制参数。因此,要么将$cat_id param作为可选项移动到路径的末尾,并在$post_type之前使用/public/web/videos/15,要么强制使用。