|string> */ public function rules(): array { return [ 'username' => ['sometimes', ...UsernameRequest::rulesFor((int) $this->user()->id)], 'email' => [ 'required', 'string', 'lowercase', 'email', 'max:255', Rule::unique(User::class)->ignore($this->user()->id), ], 'name' => ['nullable', 'string', 'max:255'], 'web' => ['nullable', 'url', 'max:255'], 'day' => ['nullable', 'numeric', 'between:1,31'], 'month' => ['nullable', 'numeric', 'between:1,12'], 'year' => ['nullable', 'numeric', 'digits:4'], 'gender' => ['nullable', 'in:m,f,n,M,F,N,X,x'], 'country' => ['nullable', 'string', 'size:2'], 'country_id' => ['nullable', 'integer', Rule::exists('countries', 'id')], 'mailing' => ['nullable', 'boolean'], 'notify' => ['nullable', 'boolean'], 'auto_post_upload' => ['nullable', 'boolean'], 'about' => ['nullable', 'string'], 'signature' => ['nullable', 'string'], 'description' => ['nullable', 'string'], 'avatar' => ['nullable', 'file', 'image', 'max:2048', 'mimes:jpg,jpeg,png,webp', 'mimetypes:image/jpeg,image/png,image/webp'], 'emoticon' => ['nullable', 'image', 'max:2048', 'mimes:jpg,jpeg,png,webp'], 'photo' => ['nullable', 'image', 'max:2048', 'mimes:jpg,jpeg,png,webp'], ]; } protected function prepareForValidation(): void { if ($this->has('username')) { $this->merge([ 'username' => UsernamePolicy::normalize((string) $this->input('username')), ]); } } }