App\Http\Controllers\MenusController::save PHP Method

save() public method

public save ( Illuminate\Http\Request $request ) : Illuminate\Http\RedirectResponse | Redirector
$request Illuminate\Http\Request
return Illuminate\Http\RedirectResponse | Illuminate\Routing\Redirector
    public function save(Request $request)
    {
        $attributes = $request->all();
        $id = $attributes['id'];
        if ($id) {
            // If $id is not null or blank we must be editing.
            // Locate existing menu item.
            $menuItem = Menu::find($id);
            if (!$menuItem->isEditable()) {
                Flash::warning(trans('admin/menu-builder/menu-builder.update-failed-cant-be-edited', ['id' => $menuItem->id, 'label' => $menuItem->label]));
            } else {
                // Fix issue #23: using the wrong column name in the unique rule.
                // validate attributes.
                $this->validate($request, array('name' => 'required|unique:menus,name,' . $id, 'label' => 'required'));
                // Log action by user.
                Audit::log(Auth::user()->id, trans('admin/menu-builder/menu-builder.audit-log.category'), trans('admin/menu-builder/menu-builder.audit-log.msg-index'));
                // Update menu item.
                $menuItem->update($attributes);
                Flash::success(trans('admin/menu-builder/menu-builder.update-success'));
            }
        } else {
            // else creating new menu item.
            // First unset/remove blank 'id' element from the array, otherwise the insert SQL statement will not
            // include an incremented value for the identity column, but instead the value of id which is
            // blank: ''.
            unset($attributes['id']);
            // Validate attributes.
            $this->validate($request, array('name' => 'required|unique:menus', 'label' => 'required'));
            // Create new menu item.
            $menuItem = Menu::create($attributes);
            Flash::success(trans('admin/menu-builder/menu-builder.create-success'));
        }
        return redirect('/admin/menus');
    }