我有一个带有静态菜单的laravel应用程序。 现在,我想将其更改为数据库中的动态菜单。 到目前为止,一切都很好,我迁移了一个名为menu_items的表。
然后我用以下处理方法编写了一个中间件:
public function handle($request, Closure $next)
{
\Menu::make('mainmenu', function ($menu) {
$items = MenuItem::all();
foreach ($items as $item) {
if ($item->parent_id == null) {
$menu->add($item->title, $item->link)
->prepend('<i class="'.$item->icon.'"></i>');
}
else {
// dd($menu);
$parent = $item->parent_id - 1;
$menu->find($parent)->add($item->title, $item->link);
}
}
return $next($request);
}
我更改为lavary / laravel-menu并尝试将子菜单动态添加到父菜单项。我不明白为什么laravel总是在
告诉我$menu->find($parent)->add($item->title, $item->link);
如果我用dd()打印出来,则在null $ parent上调用成员函数add()不会为null如果我执行类似$menu->last()->add($item->title, $item->link);
的操作,那不是我想要的...
答案 0 :(得分:1)
可能您必须在控制器中编写函数,然后将变量返回给模板?您将如何访问{{Menu :: main()}}?
$menu = Menu::build($menu_items, function ($menu, $menu_item) {
$menu->link($menu_item->title, $menu_item->link);
{{$ menu-> whatDoYouNeedToAccess}}