我的代码基于Laracasts.com上的视频。这是视频。我的想法是,我可以使用该验证方法来创建用户。当我尝试确认密码时,无论如何似乎都不匹配。我最初的想法是,它会在验证之前对密码进行哈希处理,从而无论如何都会使其返回false。
到目前为止,这是我的所有代码。
用户模型
protected $fillable = ['username' ,'email', 'password'];
public static $rules = [
'username' => 'required',
'email' => 'required|email',
'password' => 'required|confirmed'
];
public function isValid()
{
$validation = Validator::make($this->attributes, static::$rules);
if ($validation->passes()) return true;
$this->errors = $validation->messages();
return false;
}
UsersController @ Store
public function store()
{
$input = Input::all();
if (! $this->user->fill($input)->isValid())
{
return Redirect::back()->withInput()->withErrors($this->user->errors);
}
//if the user input is valid then save it and assign associated role
$this->user->save();
$this->user->assignRole(Input::get('role'));
return Redirect::to('/user')->with('flash_message', 'User added to the database!');
}
创建用户视图-表单
{{ Form::open(['role' => 'form', 'route' => 'user.store']) }}
<div class='form-group'>
{{ Form::label('username', 'First Name') }}
{{ Form::text('username', null, ['placeholder' => 'First Name', 'class' => 'form-control']) }}
</div>
<div class='form-group'>
{{ Form::label('email', 'Email') }}
{{ Form::text('email', null, ['placeholder' => 'Last Name', 'class' => 'form-control']) }}
</div>
<div class='form-group'>
{{ Form::label('role', 'Role') }}
{{ Form::select('role', $roles, "member", ['class' => 'form-control']) }}
</div>
<div class='form-group'>
{{ Form::label('password', 'Password') }}
{{ Form::password('password', ['placeholder' => 'Password', 'class' => 'form-control']) }}
</div>
<div class='form-group'>
{{ Form::label('password_confirmation', 'Password Confirm') }}
{{ Form::password('password_confirmation', ['placeholder' => 'Password Confirm', 'class' => 'form-control']) }}
</div>
<div class='form-group'>
{{ Form::submit('Create User', ['class' => 'btn btn-primary']) }}
</div>
{{ Form::close() }}
发生的事情是,password_confirmation
无论您输入什么,您的字段始终为空。
这是因为您在方法$this->user->fill($input)
内使用store
。但是,在您的模型中
protected $fillable = ['username' ,'email', 'password'];
因此,这将永远不会填补该password_confirmation
领域。
如果将更fillable
改为以下内容,则应该没有问题
protected $fillable = ['username' ,'email', 'password', 'password_confirmation'];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句