Только приступил к изучению Laravel.
Хочу вывести меню на все страницы сайта. Создал промежуточный MainController который наследует Controller. От MainController наследуются все остальные контроллеры. Код MainController
class MainController extends Controller
{
public $data = [];
public function __construct()
{
$this->data['categories'] = DB::table('categories')->get();
return $this->data;
}
}
Теперь во всех остальных контроллерах в конструкторе наследую конструктор родителя, и передаю данные во вьюшку. Пример
class HomeController extends MainController
{
public function __construct()
{
$this->middleware('auth');
parent::__construct();
}
public function index()
{
return view('home', $this->data);
}
}
Все ничего и хорошо работает, НО! Есть ряд вопросов:
- Как можно в MainController сразу в конструкторе передать данные во все вьюшки (return view('layouts.app', $this->data) - не работает)
- На данный момент меню отображается только для зарегистрированных пользователей. А если выйти то возникает ошибка "Undefined variable: categories (View: /var/www/html/lara2/resources/views/layouts/app.blade.php) (View: /var/www/html/lara2/resources/views/layouts/app.blade.php)"
Подскажите пожалуйста решение? Или я не в ту сторону иду.