merge([ 'status' => $this->status ? true : false ]); return auth()->check(); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { $rules = [ 'title' => [ 'required', 'string', 'min:7', 'max:255', function ($attribute, $value, $fail) { if ( BreedingPage::where('slug', Str::slug($value)) ->where('id', '!=', $this->breeding_page->id)->exists() ) { $fail(trans('La valeur du champ :attribute est déjà utilisé.', [ 'attribute' => $this->attributes()[$attribute] ])); } } ], 'seo_title' => 'required|string|min:20|max:60', 'seo_description' => 'required|string|min:130|max:160', 'headerContent' => 'required|string|min:10', 'subtitle' => 'required|string|min:5', 'subtitleContent' => 'required|string|min:10', 'media_type' => 'required|in:' . implode(',', [InputType::image()->value, InputType::videoVimeo()->value]), // phpcs:ignore Generic.Files.LineLength.TooLong 'picture' => 'sometimes|image|mimes:jpeg,png,jpg|max:2048|dimensions:height=615,width=575', 'picture_alt' => 'required_if:media_type,' . InputType::image()->value . '|string|min:5', 'picture_title' => 'required_if:media_type,' . InputType::image()->value . '|string|min:5', // phpcs:ignore Generic.Files.LineLength.TooLong 'video' => 'required_if:media_type,' . InputType::videoVimeo()->value . '|url|regex:/^https:\/\/vimeo\.com\/[0-9]{8,10}$/', 'status' => 'required|boolean' ]; return \array_merge_recursive_distinct( $rules, $this->generatedRules ); } /** * Get custom attributes for validator errors. * * @return array */ public function attributes(): array { return \array_merge( [ 'menutitle' => \trans('Titre menu'), 'title' => \trans('Titre'), 'metaTitle' => \trans('Titre'), 'metaDescription' => \trans('Description meta'), 'headerContent' => \trans('Contenu entête'), 'status' => \trans('Publié'), 'picture_title' => \trans('Titre (de l\'image)'), 'picture_alt' => \trans('Texte alternatif'), ], parent::attributes() ); } /** * Get custom messages for validator errors. * * @return array */ public function messages(): array { return \array_merge( [ // phpcs:ignore Generic.Files.LineLength.TooLong 'picture_alt.required_if' => trans('Le champ :attribute est olbigatoire lors que le type de média choisi est "image".'), // phpcs:ignore Generic.Files.LineLength.TooLong 'picture_title.required_if' => trans('Le champ :attribute est olbigatoire lors que le type de média choisi est "image".') ], parent::messages() ); } }