check(); } /** * Prepare the data for validation. * * @return void */ protected function prepareForValidation() { $this->merge([ 'display_video' => $this->boolean('display_video') ]); $this->mergePicture('picture'); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { $rules = [ 'title_part1' => 'required|string|between:3,255', 'title_part2' => 'required|string|between:3,255', 'title_part3' => 'required|string|between:3,255', 'picture_alt' => 'required|string|between:3,255', 'picture_title' => 'required|string|between:3,255', 'presentation_title' => 'required|string|between:3,255', 'presentation_content' => 'required|string', 'display_video' => 'present|boolean', 'video_id' => [ 'nullable', 'required_if:display_video,true', function (string $attribute, mixed $value, \Closure $fail) { if (!IsValidYoutubeId::validates($value) and !IsValidVimeoId::validates($value)) { (new IsValidYoutubeId())->validate($attribute, $value, $fail); (new IsValidVimeoId())->validate($attribute, $value, $fail); } } ], ]; return \array_merge( $rules, $this->pictureRules('picture', 640, 390, 640, 390, true, requiredIf: 'display_video,false'), ); } /** * Get custom attributes for validator errors. * * @return array */ public function attributes(): array { return [ 'video_id' => trans('validation.custom.video_id'), 'title_part1' => trans('validation.custom.title_part1'), 'title_part2' => trans('validation.custom.title_part2'), 'title_part3' => trans('validation.custom.title_part3'), 'picture_alt' => trans('validation.custom.picture_alt', [ 'field' => __('validation.custom.picture') ]), 'picture_title' => trans('validation.custom.picture_title', [ 'field' => __('validation.custom.picture') ]), 'presentation_title' => trans('validation.custom.presentation_title'), 'presentation_content' => trans('validation.custom.presentation_content'), ]; } }