Laravel несколько функций шоу в одном контроллере - PullRequest
0 голосов
/ 27 февраля 2019

У меня проблема с созданием сайта новостей.У меня есть несколько функций индекса для загрузки в представлениях категорий.внутри каждого представления я хочу иметь возможность перейти на страницу статьи с помощью функции show.Как использовать несколько функций шоу в одном контроллере.

Это 2 из 8 функций индекса, которые я использую.

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

Может ли кто-нибудь помочь мне в этом?

вся помощь приветствуется

1 Ответ

0 голосов
/ 27 февраля 2019

Я бы пошел об этом с другого подхода.Для этого вы можете использовать только один контроллер и принять категорию в качестве параметра.Например, в ваших маршрутах:

Маршруты

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

Это позволит вам загружать любые категории статей по категории.Этот подход предполагает, что у вас есть отношение category к модели Article и что модель Category имеет значение слаг.

В этом примере вы можете посетить /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);
}

Возможно, вам придется адаптировать вышеперечисленное для соответствия вашему конкретному случаю использования, но принцип, как правило, тот же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...