[英]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.