<?php namespace Modules\Menu\Http\Controllers\Admin; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Routing\Redirector; use Laracasts\Flash\Flash; use Modules\Menu\Entities\Menu; use Modules\Menu\Entities\Menuitem; use Modules\Menu\Http\Requests\CreateMenuItemRequest; use Modules\Menu\Http\Requests\UpdateMenuItemRequest; use Modules\Menu\Repositories\MenuItemRepository; class MenuItemController { /** * @var MenuItemRepository */ private $menuItem; /** * @var Redirector */ private $redirector; public function __construct(MenuItemRepository $menuItem, Redirector $redirector) { $this->menuItem = $menuItem; $this->redirector = $redirector; } public function create(Menu $menu) { return view('menu::admin.menuitems.create', compact('menu')); } public function store(Menu $menu, CreateMenuItemRequest $request) { $this->menuItem->create($this->addMenuId($menu, $request)); Flash::success('Menu item created!'); return $this->redirector->route('dashboard.menu.edit', [$menu->id]); } public function edit(Menu $menu, Menuitem $menuItem) { return view('menu::admin.menuitems.edit', compact('menu', 'menuItem')); } public function update(Menu $menu, Menuitem $menuItem, UpdateMenuItemRequest $request) { $this->menuItem->update($menuItem, $this->addMenuId($menu, $request)); Flash::success('Menu item updated!'); return $this->redirector->route('dashboard.menu.edit', [$menu->id]); } /** * @param Menu $menu * @param \Illuminate\Foundation\Http\FormRequest $request * @return array */ private function addMenuId(Menu $menu, FormRequest $request) { return array_merge($request->all(), ['menu_id' => $menu->id]); } }