繁体   English   中英

Laravel在同一控制器中具有多种显示功能

[英]Laravel multiple show functions within the same controller

我在制作新闻网站时遇到问题。 我有多个索引函数可在类别视图中加载。 在每个视图的内部,我希望能够通过使用show函数转到文章页面。 如何在一个控制器中使用多个显示功能。

这些是我使用的8种索引功能中的2种。

public function indexbusiness()
{
    $artikels =  Artikel::where('category_id', '4')->get();
    return view('pages.business')->with('artikels', $artikels);
}

public function indextech()
{
    $artikels =  Artikel::where('category_id', '5')->get();
    return view('pages.tech')->with('artikels', $artikels);
}

我想添加这样的显示功能

 public function showbusiness($id)
{
    $artikel = Artikel::find($id);
    return view(pages.show);
}

有人可以帮我这个忙吗?

感谢所有帮助

我将通过另一种方法来解决这个问题。 您只能为此使用一个控制器,并接受类别作为参数。 例如,在您的路线中:

路线

Route::get('/articles', 'ArticlesController@index');
Route::get('/articles/{category}', 'ArticlesController@index');

在您的控制器内,您将只有一个索引方法。 例如:

ArticleController

public function index($category)
{
    if($slug) {
        $articles = Article::whereHas('category', function ($query) use ($category) {
            $query->where('slug', $category);
        })->get();

        return view('pages'.$category)->with('articles', $articles);
    }

    $articles = Article::all();

    return view('pages.articles')->with('articles);
}

这样您就可以按类别加载想要的文章。 这种方法假设您在Article模型上具有category关系,并且Category模型具有一个ug值。

对于此示例,然后可以访问/articles/tech/articles/business

然后,可以使用show方法执行相同的方法。 为此,您的路线可能如下所示:

路线

Route::get('/articles/{category}/{article}', 'ArticlesController@show');

然后,您的控制器可能是

ArticleController

public function show($category, $id)
{
    $article = Article::whereHas('category', function (query) use ($category) {
        $query->where('slug', $category);
    })->where('id', $id)->first();

    return view('pages.show')->with('article', $article);
}

您可能需要修改以上内容以适合您的特定用例,但是原理通常是相同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM