Php Laravel自定义控制器方法调用
我需要基本的帮助,因为我是新来的拉威尔 处境 我有一个controllerArticlesController,它有一个索引方法,列出了所有的文章,并且工作正常。下面的这条路线允许我按“id”显示单个文章,如下面的articles/id example articles/35。但我还需要展示“游泳”类的所有文章。当我点击文章/游泳时,它将查找id=游泳。但我不知道如何定制路线来列出“游泳”类别的所有文章。我已经在控制器内做了一个“游泳”的方法,但我需要路线方面的帮助吗Php Laravel自定义控制器方法调用,php,laravel,routing,Php,Laravel,Routing,我需要基本的帮助,因为我是新来的拉威尔 处境 我有一个controllerArticlesController,它有一个索引方法,列出了所有的文章,并且工作正常。下面的这条路线允许我按“id”显示单个文章,如下面的articles/id example articles/35。但我还需要展示“游泳”类的所有文章。当我点击文章/游泳时,它将查找id=游泳。但我不知道如何定制路线来列出“游泳”类别的所有文章。我已经在控制器内做了一个“游泳”的方法,但我需要路线方面的帮助吗 Route::bind
Route::bind('articles', function($value, $route) {
return $list = App\Article::whereid($value)->first();
});
您可以轻松创建/使用两个单独的路由,一个用于按id分类的
文章,另一个用于按类别分类的文章,因此,例如,路由可以声明为:
Route::get('articles', 'ArticleController@index');
Route::get('articles/{id}', 'ArticleController@getById')->where('id', '[0-9]+');
Route::get('articles/{category}', 'ArticleController@getByCategory')->where('category', '[A-Za-z]+');
然后您可以使用Controller方法
s,如(在ArticleController.php
中):
这只是一个基本的想法,无论如何你都可以改进。Route::get('articles/category/{cat}),function($value){return$list=App\Article::where('category','=',$value')->first();})
我个人喜欢添加一个相当标准的模式,比如Route::pattern('id',“[0-9]+”代码>似乎使路线更干净。是的,你可以添加一个全局模式,检查该部分。
public function index()
{
return App\Article::all();
}
public function getById($id)
{
return App\Article::whereId($id)->first();
}
public function getByCategory($category)
{
return App\Article::with(['category' => function($q) use($category)
{
$q->where('category', $category);
}])->get();
}