【问题标题】:Laravel custom password validationLaravel 自定义密码验证
【发布时间】:2015-01-22 19:48:30
【问题描述】:

您好,很高兴我想为我的文本字段使用自定义验证规则:

{{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');
        }



 }

【问题讨论】:

    标签: php html validation laravel blade


    【解决方案1】:

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

    您可以在 Laravel 的文档中查看示例:http://laravel.com/docs/4.2/validation#basic-usage

    您使用的模式:/^[a-z]{4,}+$/ 可以解释为“以至少 4 个字符开头的字符串匹配小写 a 到 z 和字符串末尾的加号”。删除加号(由于前面的量词,正则表达式按字面意思解释)应该可以正常工作。

    修改后记得artisan optimize,确保compiled.php被重新编译。

    【讨论】:

    • 模式不起作用,但以下方法起作用:'password'=>'regex:/^[a-z]{4,}+$/' 但它并不完全好用。因为当我输入“asdf”时,它应该是一个有效的输入。但我不断收到消息:密码格式无效。你能帮帮我吗?
    • 您是否删除了所有其他自定义验证?
    • 那个加号无效。 olus 标志表示“1 或更多”,而在此之前,您会说“至少 4”。
    • 为清晰起见进行了编辑。它现在可能会回答你的问题。
    猜你喜欢
    • 1970-01-01
    • 2017-12-09
    • 2018-01-29
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 2012-11-27
    • 2020-01-27
    • 2019-07-04
    相关资源
    最近更新 更多