public function generateItem(NavItem $item) { $view = 'item'; $data = ['item' => $item]; $active = $this->collection->active; if ($item->hasChild()) { $data = array_merge($data, ['child' => $item->child]); if ($item->child->isActive($active)) { $view = 'child_active'; } else { $view = 'child'; } } elseif ($item->isActive($active)) { $view = 'item_active'; } else { $view = 'item'; } return view($this->views[$view], $data)->render(); }