Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel自定义控制器方法调用_Php_Laravel_Routing - Fatal编程技术网

Php Laravel自定义控制器方法调用

Php Laravel自定义控制器方法调用,php,laravel,routing,Php,Laravel,Routing,我需要基本的帮助,因为我是新来的拉威尔 处境 我有一个controllerArticlesController,它有一个索引方法,列出了所有的文章,并且工作正常。下面的这条路线允许我按“id”显示单个文章,如下面的articles/id example articles/35。但我还需要展示“游泳”类的所有文章。当我点击文章/游泳时,它将查找id=游泳。但我不知道如何定制路线来列出“游泳”类别的所有文章。我已经在控制器内做了一个“游泳”的方法,但我需要路线方面的帮助吗 Route::bind

我需要基本的帮助,因为我是新来的拉威尔

处境 我有一个controllerArticlesController,它有一个索引方法,列出了所有的文章,并且工作正常。下面的这条路线允许我按“id”显示单个文章,如下面的articles/id example articles/35。但我还需要展示“游泳”类的所有文章。当我点击文章/游泳时,它将查找id=游泳。但我不知道如何定制路线来列出“游泳”类别的所有文章。我已经在控制器内做了一个“游泳”的方法,但我需要路线方面的帮助吗

  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();

}