Laravel @include данные контроллера - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь получить данные на боковой панели, которая включена в шаблон блейда, но я не получаю никаких данных.Я попытался добавить @include('admin.sidebar',['message_counter' => $message_counter]) и на боковой панели отобразить как {{$message_counter}}.Я получаю Undefined variable: message_counter.

Мой маршрутизатор:

Route::get('/admin/sidebar', [
        'uses' => 'MessagesController@counter',
        'as' => 'admin.sidebar'

    ]);

Мой контроллер

use App\Message;

public function counter()
    {
        $message_counter = Message::where('status', 0)->get();
        return view('admin.sidebar')->with('message_counter', $message_counter);
    }

My View

<span class="menu-collapsed">Messages <span class="badge badge-pill badge-primary ml-2"> {{$message_counter}} </span></span>

В конечном итоге я собираюсь показать количество непрочитанных сообщений на боковой панели административного бэкэнда, равное @include на каждой странице.

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

Я смотрел на Включая подвиды , но я, вероятно, упускаю что-то глупое или не понимаю какую-то ключевую концепцию, помогитеприветствуется!

Спасибо!

Ответы [ 3 ]

0 голосов
/ 19 сентября 2019

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

Контроллер

public function counter()
{
    $message_counter = Message::where('status', 0)->get();
    return view('admin.sidebar');
}

Просмотр

@php 
    $message_counter = App\Message::where('status', 0)->get();
@endphp

Messages <span class="badge badge-pill badge-primary ml-2"> {{$message_counter}} </span></span>
0 голосов
/ 19 сентября 2019

Вы можете попробовать вот так В маршруте:

Route::get('/admin/sidebar', 'MessagesController@counter');

В контроллере

use App\Message;

public function counter()
{
  $message_counter = Message::where('status', 0)->get();
  return view('admin.sidebar', compact('message_counter));
}

И ваш взгляд в порядке.Попробуйте, и если это не работает, пожалуйста, дайте мне знать ....

0 голосов
/ 19 сентября 2019

С помощью View Composer: добавьте это в App \ Providers \ AppServiceProvider @ boot ()

View::composer('admin.sidebar', function ($view) {
            $message_counter = Message::where('status', 0)->get();
            $view->with([''message_counter' => $message_counter]);
        });
...