• Для чего нужен after hook в laravel Form Request?

    @Yadalay
    Php, Mysql, Html, Css, Js/Jquery/Ajax, Laravel
    Для того, чтобы добавить свои правила и вывод сообщений об ошибке валидации. Вот пример:
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'current_password' => 'required_with:password',
            'password' => 'required_with:current_password|confirmed',
            'name' => 'required|unique:users,name,' . $this->user()->id
        ];
    }
    
    /**
     * Configure the validator instance.
     *
     * @param  \Illuminate\Validation\Validator  $validator
     * @return void
     */
    public function withValidator($validator)
    {
        $validator->after(function ($validator) {
            $currentPassword = $this->current_password;
    
            if (! empty($currentPassword) && ! Hash::check($currentPassword, $this->user()->password)) {
                $validator->errors()->add('current_password', 'Текущий пароль не совпадает с указанным паролем.');
            }
    
            if (! empty($currentPassword) && ! strcmp($currentPassword, $this->password)) {
                $validator->errors()->add('password', 'Новый пароль не может совпадать с текущим паролем.');
            }
    
            if (! empty($this->password) && mb_strlen($this->password) < 6) {
                $validator->errors()->add('password', 'Пароль должен содержать минимум 6 символов.');
            }
        });
    }
    Ответ написан
    2 комментария