2014-11-24 122 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