2014-11-24 1 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-х символов, соответствующих строчных букв а, через г и знак плюс в конце строка». Удаление знака плюса (которое регулярное выражение интерпретирует буквально из-за квантификатора перед ним) должно сделать эту работу должным образом.

Запомните artisan optimize после внесения изменений, чтобы убедиться, что compiled.php перекомпилирован.

+0

Шаблон не работает, но работает следующее: 'password' => 'regex:/^ [a-z] {4,} + $ /' Но это не работает полностью хорошо. Потому что, когда я печатаю «asdf», он должен быть действительным. Но я продолжаю получать сообщение: формат пароля недействителен. Не могли бы вы мне помочь? – superkytoz

+0

Удалили ли вы все другие пользовательские проверки? –

+0

Да, потому что у меня только это: link: http://pastebin.com/WJe2YWSS – superkytoz