【发布时间】:2020-10-30 06:53:28
【问题描述】:
我正在尝试通过控制器构造函数将数据添加到布局变量。我之所以要这样做是因为在调用此控制器时,我总是需要将类别添加到顶部菜单中。
目前没有成功。我通过这样的视图编辑器将数据添加到布局中。
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
}
}
}
我想在 Controller 构造函数中扩展数据。
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 都会抛出异常:
在构建 [App\Http\Controllers\Post\PostController, Illuminate\View\View] 时,目标 [Illuminate\Contracts\View\Engine] 不可实例化。
【问题讨论】:
-
即使这没有出错,您要做的只是让服务容器为您解析一个 View 实例并在其上调用一些东西。它不会影响您从控制器返回的视图。
-
你能描述一下你想要实现的目标吗,因为它在代码中(对我来说)没有清楚地表达出来?
-
添加更多数据并尝试清楚,我不清楚这是什么以及您尝试实现的目标!