非静态方法basemodel :: validate()不应该静态调用,假设来自兼容上下文的$ this

时间:2014-06-05 16:28:42

标签: laravel

尝试验证我的注册表单,从我的控制器中的basemodel调用验证方法 方法

  public function postSIgnup () 
  {
        $validation = User::validate(Input::all());
  }

路线

Route :: post('register',array('before =>'csrf','uses'=>'UsersController @ postSignup'));

帮助解决这个问题

1 个答案:

答案 0 :(得分:0)

你不能只说“验证我的整个表格”。 发生此错误的原因是您尝试使用Laravel中的验证方法。

Laravel中的基本表单验证

首先,您要获取所有表单数据/内容。

$input = Input::all();

其次,您可以设置一些规则。这些规则可以在Laravel将使用的数组中设置。 确保名称拼写正确。 (这些是您在表单模板中使用的那些。)

$rules = array(
            'real_name' => 'Required|Min:3|Max:80|Alpha',
            'email'     => 'Required|Between:3,64|Email|Unique:users',
            'age'       => 'Integer|Min:18',
            'password'  =>'Required|AlphaNum|Between:4,8|Confirmed',
            'password_confirmation'=>'Required|AlphaNum|Between:4,8'
    );

要使用验证器,您必须先创建一个新实例: 您附加表单输入和上面设置的规则。 当它们匹配时,您可以将表单保存到数据库中或者您想要使用它做什么。这可能看起来像:

$validator = Validator::make($input,$rules);

酷, 我们现在可以检查验证器是否通过......

if($validator->fails()){
 $messages = $validator->messages();
 return Redirect::to('yourpage')->withErrors($messages);
}else{
 // Handle your data... 
}
相关问题