求解:路由可变参数定义和模板中获取文章分类问题

小杰

1.第一个问题:
index应用,article类,cate方法
路径为/index/atricle/cate[/type][/page],
/type和/page是可变参数

如访问:
/index/atricle/cate,
/index/atricle/cate/type,
/index/atricle/cate/page,
/index/atricle/cate/type/page

这条路由规则应该怎么定义成由column开头,ename对应cate的名称?
定义如下面方法错误:
Route::any('/column/{ename}[/{type}][/{page}]', [app\index\controller\Article::class, 'cate'])->name('column.cate');

模板中的url使用
route('column.cate',['ename' => $cate.ename]);
route('column.cate',['ename' => $cate.ename,'type'=> $cate.type]);

2.第二个问题:
在模板中如何使用request()函数获取使用了路由后的参数。
如/index/article/cate()方法,文章分类的ename名称为news,
route('column.cate',['ename' => $cate.ename])
如何拿到ename,
使用request()->get('ename')无法获取到,此处为了解决我点击相应的分类栏目,改变背景色。

阅读 171
1个回答

walkor

1、最简单的方案,每个规则写一个路由,起个名字,类似

Route::any('/index/atricle/cate', [app\index\controller\Article::class, 'cate'])->name('column.cate.empty');
Route::any('/index/atricle/cate/{type_or_page}', [app\index\controller\Article::class, 'cate'])->name('column.cate.or');
Route::any('/index/atricle/cate/{type}/{page}', [app\index\controller\Article::class, 'cate'])->name('column.cate.type.page');

2、通过view方法将变量传递到模版里,例如
return view('path/file', ['ename' => xxx]);

模版里用
route('column.cate',['ename' => $ename])

  • 小杰 2021-11-30

    谢谢,问题解决。think的路由,使用起来感觉更简单,像这样一条即可,Route::get('blog/:year/[:month]/[:day]','Blog/archive');