验证失败(Laracasts验证)

时间:2014-05-23 14:42:52

标签: validation laravel-4

我正在尝试使用this教程验证注册表单。但是,在提交时,我收到以下错误消息:

Laracasts \ Validation \ FormValidationException
Validation failed

请注意,我尚未禁用我的前端验证进行测试,因此会自动验证这些值。但它仍然失败。这是我的相关代码:

# RegistrationForm.php

<?php namespace forms;

# app/validators.php

use Laracasts\Validation\FormValidator;

class RegistrationForm extends FormValidator{

    protected $rules =[
            'first_name' => 'required|alpha|max:25',
            'last_name' => 'required|alpha|max:25',
            'username' => 'required|unique:k_users|max:45',
            'password' => 'required|confirmed|min:8',
            'email' => 'required|unique:k_users|email',
            'Gender' => 'required|in:m,f,o',
            'year' => 'required|integer|min:1900|max:2014',
            'country' => 'required',
            'location' => 'max:50|alpha_spaces',
    ];
}

RegisterController中的存储功能

public function store()
{
    $input = Input::only('first_name','last_name', 'username','password','email','Gender','year','country','location');
    try
    {
        $this->registrationForm->validate($input);
        Register::saveFormData();
        return Redirect::to('hello');
    }
    catch (FormValidationException $e)
    {
        return Redirect::back()->withInput()->withErrors($e->getErrors());
    }



}

1 个答案:

答案 0 :(得分:3)

如果您的意思是没有抓住您的例外:

catch (FormValidationException $e)

是因为您可能正在使用命名空间,因此您有两个选择:

1)将完整的命名空间添加到您的例外名称

catch (\Laracasts\Validation\FormValidationException $e)

2)在文件顶部使用

use Laracasts\Validation\FormValidationException;

你可以保持原样:

catch (FormValidationException $e)