uploadTitlePhoto($request); // let template to modify request and content page call_user_func_array([CurrentTemplate::handler(), 'beforeSave'], [&$page, $request]); $request->url = Str::slug($request->url); $request->parentPage = $request->parentPage ? $request->parentPage : null; $request->publishedFrom = empty($request->publishedFrom) ? null : $request->publishedFrom; $request->publishedTo = empty($request->publishedTo) ? null : $request->publishedTo; if (!$file) { $request->titlePhotoFilename = empty($request->existingTitlePhoto) ? null : $request->existingTitlePhoto; } else { $request->titlePhotoFilename = $file['filename']; } // array of fields in database and fields from request $fields = [ 'title' => 'title', 'url' => 'url', 'template' => 'template', 'published_from' => 'publishedFrom', 'published_to' => 'publishedTo', 'meta_keywords' => 'metaKeywords', 'meta_description' => 'metaDescription', 'content' => 'pageContent', 'parent_id' => 'parentPage', 'status' => 'status', 'title_photo' => 'titlePhotoFilename', 'category_id' => 'category' ]; // save new values with history // todo move this method out of the controller! $data = \App\Http\Controllers\Admin\Contents\EditContent::getFields($request, array_values($fields)); // todo use Model Observer and model::original attributes list($revision, $changedColumns) = $page->updateWithHistory($fields, $data); $changedColumns += call_user_func_array([$page->module_handler, 'edit'], [&$page, $request, $revision]); // move to interaction $changedColumns += $page->uploadRelatedFiles($request, $revision); if ($changedColumns > 0) { Event::fire(new EditContentEvent($page, $revision)); } return [$page, $revision, $changedColumns]; } public function getValidationRules($parameters) { $id = $parameters[0]->id; // get all available statuses $statuses = ContentStatuses::getSimple(); $statuses = implode(',', $statuses); return [ 'title' => 'required', 'url' => 'required|unique:contents,url,' . $id, 'publishedFrom' => 'date', 'publishedTo' => 'date', 'title_photo' => 'exists:files,id', 'status' => 'required|in:' . $statuses, 'parentPage' => 'exists:contents,id' ]; } }