merge([ 'config_id' => $this->config_id != 0 ? $this->config_id : null, 'isLocked' => $this->boolean('isLocked'), 'isRoot' => $this->boolean('isRoot'), 'slug' => $this->boolean('isRoot') ? "" : $this->slug, ]); if ($this->config_id) { parent::prepareForValidation(); } $this->mergeInertiaPicture(); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules(): array { $rules = [ 'title' => 'required|string|between:3,255', 'page_id' => 'sometimes|nullable|numeric|exists:dynamic_pages,id', 'config_id' => 'sometimes|nullable|numeric|exists:page_configs,id', 'status' => ['required', new Enum(PageStatusEnum::class)], 'isLocked' => 'required|boolean', 'isRoot' => 'required|boolean', ]; if ($this->boolean('isRoot')) { $rules['slug'] = ['present', 'nullable']; } else { $rules['slug'] = ['required', 'string', 'regex:/^[-A-Za-z0-9]{3,255}$/']; } if ($this->config_id) { $rules = \array_merge( ['content' => 'required|array|min:1'], parent::rules(), $rules, ); } else { $rules = \array_merge([ 'content' => ['required', 'string', new WysiwygLength()], ], $rules); } return $rules; } /** * Get custom attributes for validator errors. * * @return array */ public function attributes(): array { $attributes = [ 'title' => trans('validation.attributes.title'), 'page_id' => trans_choice('models.classes.dynamic-page', 1), 'config_id' => trans_choice('models.classes.page-config', 1), 'status' => trans('validation.custom.status'), 'isLocked' => trans('validation.custom.locked'), 'isRoot' => trans('validation.custom.root'), ]; if ($this->config_id) { $attributes = \array_merge( parent::attributes(), $attributes, ); } else { $attributes = \array_merge([ 'content' => trans('validation.attributes.content'), ], $attributes); } return $attributes; } }