Я пытаюсь добавить данные в переменную макета через конструктор контроллера. Причина, по которой я хочу это сделать, заключается в том, что мне всегда нужно добавлять категории в главное меню при вызове этого контроллера.
Пока безуспешно. Я добавляю данные в макет через представление composer, как это.
namespace App\Http\ViewComposers;
use Illuminate\View\View;
use App\Menu;
class MenuComposer
{
public function compose(View $view)
{
if (in_array($view->getName(), ['layouts.master', 'layouts.master-post', 'layouts.error']))
{
$menu = Menu::menu('topmenu');
view()->with('topmenu', $menu);
// view()->share('topmenu', $menu); not working either
}
}
}
Я хочу расширить данные в конструкторе контроллера.
namespace App\Http\Controllers\Post;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\View\View;
class PostController extends Controller {
public function __construct(View $view)
{
$view->offsetGet('topmenu');
// $view->gatherData() not working either
}
Что бы я ни пробовал, Laravel выдает исключение:
Target [Illuminate \ Contracts \ View \ Engine] не может быть создан при создании [App \ Http \ Controllers \ Post \ PostController, Illuminate \ View \ View].