merge([ 'config_id' => $this->config_id != 0 ? $this->config_id : null, 'isLocked' => $this->boolean('isLocked'), ]); if ($this->config_id) { parent::prepareForValidation(); } } /** * Get the validation rules that apply to the request. * * @return array */ public function rules(): array { $rules = [ 'title' => 'required|string|between:3,255', 'slug' => 'required|string|regex:/^[-A-Za-z]{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', ]; 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'), ]; if ($this->config_id) { $attributes = \array_merge( parent::attributes(), $attributes, ); } else { $attributes = \array_merge([ 'content' => trans('validation.attributes.content'), ], $attributes); } return $attributes; } }