很高兴我想为我的文本字段使用自定义验证规则:
{{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 :(得分:0)
如果您的代码反映了项目的范围,则可能根本不需要自定义验证器。您可以在用户模型中使用pattern:/^[a-z]{4,}$/
作为$rules
之一。
您可以在Laravel的文档中看到示例:http://laravel.com/docs/4.2/validation#basic-usage
您使用的模式:/^[a-z]{4,}+$/
可以解释为&#34;一个字符串,以至少4个字符开头,匹配小写的a到z和字符串末尾的加号&#34;。删除加号(由于前面的量词,正则表达式正在解释)应该能够正常工作。
在进行更改后请记住artisan optimize
以确保已重新编译compiled.php。