2014-11-24 83 views
0

你好很高兴我想用一个自定义的验证规则为我的文本框:Laravel自定义密码验证

{{Form::label('password', 'Wachtwoord: ', array('class' => 'col-xs-4'))}} 
<div class="col-xs-2">{{ Form::password('password', array('class' => 'form-control', 'placeholder'=>'Password')) }}</div> 

而且我已经遵循了以下链接上的说明:http://laravel.com/docs/4.2/validation#custom-validation-rules

但我卡住时我想用我的自定义验证..我认为我在我的代码中做了错误。

很高兴我想为我的密码文本字段使用validatePassword()方法(在validation.php中)。

这里是我的UserController.php:

public function update($id) 
{ 

    $user_old_data = User::find($id); 

    $input_password = Input::get('password'); 

    Validator::resolver(function($translator, $data, $rules, $messages) 
    { 
     return new validation($translator, $data, $rules, $messages); 
    }); 


    /*Validator::extend('validatePassword', function($input_passwords,$input_passwords){ 

    });*/ 

    /*$validator = Validator::make($data = $thisUser, User::$rules); 

    if ($validator->passes()) { 

     if($user_old_data['email'] != $new_email){ 

      $email_exists = User::FindEmailOrFail2(Input::get('email'));  

      if($email_exists) 
       return Redirect::back()->withErrors($validator)->withInput(); 
     } 


     //maak message variabel aan in je user index view. 
     return Redirect::to('user/users')->with('message', 'Update with new password succesfull'); 
    } */ 

    return Redirect::back()->withErrors($validator)->withInput(); 
} 

这里是我的validation.php:

<?php 
// app/validators/validation.php 
class validation extends Illuminate\Validation\Validator 
{ 

     public function validateFoo($attribute, $value, $parameters){ 

     //return $value == 'foo'; 
     echo "this is the: " . $value; 
     } 
     //{4,} will match strings of length 4 or more. 
     protected function validatePassword($attribute, $value) { 
      return (bool) preg_match('/^[a-z]{4,}+$/', $value); 
      die('test'); 
     } 



} 

回答

0

如果你的代码反映了你的项目,你可能不需要自定义验证所有范围。您可以在您的用户模型中使用pattern:/^[a-z]{4,}$/作为您的$rules之一。

你可以看到Laravel的文档中的例子:http://laravel.com/docs/4.2/validation#basic-usage

您使用的模式:/^[a-z]{4,}+$/可以被解释为“一个字符串开头有至少4个字符到z和一个加号在的结束匹配小写形式串”。除去加号(正则表达式由于之前的量词而逐字解释)应该能够正常工作。

请记住在artisan optimize进行更改以确保compiled.php重新编译后。

+0

模式没有工作,但以下工作:'密码'=>'正则表达式:/^[a-z] {4,} + $ /'但它不起作用。因为当我输入“asdf”时,它应该是一个有效的输入。但我不断收到消息:密码格式无效。你能帮我吗? – superkytoz 2014-11-25 09:12:25

+0

您是否删除了所有其他自定义验证? – 2014-11-25 16:02:21

+0

是的,因为我只有这个:链接:http://pastebin.com/WJe2YWSS – superkytoz 2014-11-25 22:14:59