我的代码基于Laracasts.com上的视频。 Here is the video。我的想法是我可以使用该验证方法来创建用户。当我尝试确认密码时,无论如何它似乎都不匹配。我最初的想法是它在验证之前对密码进行哈希处理,导致它无论如何都会返回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 @商店
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() }}
答案 0 :(得分:2)
正在发生的事情是,无论您输入什么内容,password_confirmation
字段始终为空。
这是因为您在$this->user->fill($input)
方法中使用store
。但是,在您的模型中,您有
protected $fillable = ['username' ,'email', 'password'];
所以,这永远不会填满password_confirmation
字段。
如果您将fillable
更改为以下内容,则应该没有问题
protected $fillable = ['username' ,'email', 'password', 'password_confirmation'];