Laravel 网络路由变量没有按预期返回
Laravel web route variable is not returning as supposed
我有以下路线:
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);
}
访问时 URL /public/web/15/videos
它 return '15' 应该是 return {post_type} 值(视频),而它 return 是 {cat_id?} 值。
传递给动作的变量必须遵循路由中的定义。
也就是说,在您的情况下,您首先期望 cat_id
,然后是 post_type
,这意味着您必须将方法定义为:
public function index($cat_id, $post_type) { }
此外,我预计您仍然会遇到一些问题,因为您不能先有一个可选参数,然后再有一个强制参数。因此,要么将 $cat_id
参数作为可选参数移动到路由的末尾,然后在 (/public/web/videos/15
) 之前使用 $post_type
,要么将两者都强制执行。
我有以下路线:
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);
}
访问时 URL /public/web/15/videos 它 return '15' 应该是 return {post_type} 值(视频),而它 return 是 {cat_id?} 值。
传递给动作的变量必须遵循路由中的定义。
也就是说,在您的情况下,您首先期望 cat_id
,然后是 post_type
,这意味着您必须将方法定义为:
public function index($cat_id, $post_type) { }
此外,我预计您仍然会遇到一些问题,因为您不能先有一个可选参数,然后再有一个强制参数。因此,要么将 $cat_id
参数作为可选参数移动到路由的末尾,然后在 (/public/web/videos/15
) 之前使用 $post_type
,要么将两者都强制执行。