【问题标题】:Laravel custom controller method callingLaravel 自定义控制器方法调用
【发布时间】:2015-10-30 22:23:53
【问题描述】:

我需要基本的帮助,因为我是 Laravel 的新手。

情况

我有一个控制器 ArticlesController,它具有列出所有文章的索引方法,并且工作正常。下面的这条路线允许我按“id”显示单个文章,例如文章/id 示例文章/35。但我还需要显示“游泳”类别中的所有文章。当我点击文章/游泳时,它会寻找 id=swimming。但我不知道如何制作自定义路线来列出“游泳”类别的所有文章。我在控制器中创建了一个“游泳”方法,但我需要路线方面的帮助?

  Route::bind('articles', function($value, $route) {
     return $list = App\Article::whereid($value)->first();
    
    });

【问题讨论】:

  • Route::get('articles/category/{cat}', function($value){ return $list = App\Article::where('category','=',$value')->first(); })

标签: php laravel routing


【解决方案1】:

您可以轻松创建/使用两条单​​独的路由,一条用于articles by id,另一条用于articles by category,例如,可以将路由声明为:

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 Methods like (in ArticleController.php):

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

}

这只是一个基本的想法,无论如何你可以改进它。

【讨论】:

  • 如果它是相当标准的东西,我个人喜欢添加一个模式,比如Route::pattern("id", "[0-9]+"); 似乎让路线更干净一些。
  • 是的,您可以添加全局模式,请查看Global Constraints 部分。
猜你喜欢
  • 2023-04-05
  • 2013-06-02
  • 1970-01-01
  • 2012-12-25
  • 2018-01-12
  • 2011-07-23
  • 2023-03-03
  • 2015-10-19
  • 2016-07-05
相关资源
最近更新 更多