Php laravel 4.1验证程序相同规则错误
尝试验证项目中的2密码字段时出错 这是我的控制器Php laravel 4.1验证程序相同规则错误,php,laravel-4,Php,Laravel 4,尝试验证项目中的2密码字段时出错 这是我的控制器 public function showReg() { return View::make('reg'); } public function addUser() { $uname = Input::get('uname'); $f_name = Input::get('name'); $pass = Input::get('pass'); $pass2 = Input::get('pass2'); $hashed = Hash::m
public function showReg()
{
return View::make('reg');
}
public function addUser()
{
$uname = Input::get('uname');
$f_name = Input::get('name');
$pass = Input::get('pass');
$pass2 = Input::get('pass2');
$hashed = Hash::make($pass);
$hashed2 = Hash::make($pass2);
$val_uname = Validator::make(
array('User Name' => $uname),
array('User Name' => 'required|max:20|min:4')
);
$val_fname = Validator::make(
array('First Name' => $f_name),
array('First Name' =>'required|max:20|min:4')
);
$val_pass = Validator::make(
array('Password' => $pass),
array('Password' => 'required|min:6|max:8')
);
$val_pass2 = Validator::make(
array('Password confimation' => $pass2),
array('Password confimation' => 'required|min:6|max:8|same:pass')
);
if ($val_uname->fails())
{
return Redirect::to('reg')->withErrors($val_uname);
}
if ($val_fname->fails())
{
return Redirect::to('reg')->withErrors($val_fname);
}
if ($val_pass->fails())
{
return Redirect::to('reg')->withErrors($val_pass);
}
if ($val_pass2->fails())
{
return Redirect::to('reg')->withErrors($val_pass2);
}
$user_data = new User;
$user_data->uname = $uname;
$user_data->name = $f_name;
$user_data->pass = $hashed;
$user_data->save();
return Redirect::to('sucess');
}
}
这是我的视图代码
@extends('master')
@section('main')
{{-- the Forms to post the information to database to create a user --}}
{{ Form::open(array('url' => 'reg')) }}
{{ Form::label('uname', 'User Name : ') }}
{{ Form::text('uname') }}
<br>
{{ Form::label('name', 'First Name : ') }}
{{ Form::text('name') }}
<br>
{{ Form::label('pass', 'Password : ') }}
{{ Form::Password('pass') }}
<br>
{{ Form::label('pass2', 'Password confirmation : ') }}
{{ Form::Password('pass2') }}
<br>
{{ Form::submit('Submit') }}
{{ Form::close()}}
{{ $errors->first() }}
@endsection
@extends('master'))
@节(“主节”)
{{--将信息发布到数据库以创建用户--}的表单
{{Form::open(数组('url'=>'reg'))}
{{Form::label('uname','User Name:')}
{{Form::text('uname')}
{{Form::label('name','First name:')}
{{Form::text('name')}
{{Form::label('pass','Password:')}
{{Form::Password('pass')}
{{Form::label('pass2','密码确认:')}
{{Form::Password('pass2')}
{{Form::submit('submit')}
{{Form::close()}}
{{$errors->first()}
@端部
我的错误是我得到的
密码确认和密码传递必须匹配
我不知道我的代码中哪里有错误的部分
感谢@Sam的帮助和支持您不需要使用不同的验证器来验证不同的字段。您可以使用单个验证器来完成。您正在使用
same:pass
验证密码确认,但验证器中没有字段pass
代码的一个不太复杂的版本:
function addUser()
{
$uname = Input::get('uname');
$f_name = Input::get('name');
$pass = Input::get('pass');
$pass2 = Input::get('pass2');
$hashed = Hash::make($pass);
$hashed2 = Hash::make($pass2);
$input = array(
'uname' => $uname,
'name' => $f_name,
'pass' => $pass,
'pass2' => $pass2
);
$rules = array(
'uname' => 'required|max:20|min:4',
'name' => 'required|max:20|min:4',
'pass' => 'required|min:6|max:8',
'pass2' => 'required|min:6|max:8|same:pass'
);
$validator = Validator::make($input, $rules);
if ($validator->fails()) {
return Redirect::to('reg')->withErrors($validator);
}
$user_data = new User;
$user_data->uname = $uname;
$user_data->name = $f_name;
$user_data->pass = $hashed;
$user_data->save();
return Redirect::to('sucess');
}
您可以尝试以下方法:
...
$uname = Input::get('uname');
$f_name = Input::get('name');
$pass = Input::get('pass');
$pass2 = Input::get('pass_confirmation');
$hashed = Hash::make($pass);
$hashed2 = Hash::make($pass2);
...
$rules = array(
'uname' => 'required|max:20|min:4',
'name' => 'required|max:20|min:4',
'pass' => 'required|min:6|max:8|confirmed',
'pass_confirmation' => 'required|min:6|max:8|same:pass'
);
$v = Validator::make($input, $rules);
if( $v->fails() ) {
$messages = $v->getMessages()->all();
}
else {
//validation passed
}
确保对于给定属性,存在匹配的属性\确认属性。并将确认密码的html更改为:
{{ Form::label('pass2', 'Password confirmation : ') }}
{{ Form::Password('pass_confirmation') }}
谢谢回答伙计们和Than们的帮助现在手机上即时通讯20 mnt,我会尝试你提供给mei的解决方案会尝试这个谢谢你的帮助什么是相同的验证?@Rohan“相同”是检查“通过确认”字段与“通过”字段相同,也就是说,两个字段应该有相同的值。但是我们已经对此进行了
确认
验证。这只是一个备选方案吗?@MatthewJohnson不,没有任何原因,这只是一个基本示例,上面的代码可以修改为使用Input:all()来获取请求的所有输入。。