【发布时间】:2020-09-10 22:07:33
【问题描述】:
我的表单已提交,但未存储在表格中。如果我在请求上创建 dd(),数据就在其中,但是当我执行 save() 时,它不会按预期工作。我想在后台表单上添加用户,只需使用姓名、电子邮件、用户类型和密码。
编辑:我将问题图像更改为代码以便对您更容易,对第一次尝试感到抱歉。 编辑 2:现在出现了更多 2 件事,password_confirmation 上的验证总是错误的,如果我跳过验证会给我这个错误:
BadMethodCallException 调用未定义的方法 App\User::forget()
Controller 上的功能存储:
public function store(Request $request)
{
$dados = $request->validate(
[
'name' =>'required|min:2|max:20',
'email' =>'required|email|unique:App\User,email',
'password' =>'required|min:8',
'password_confirmation' =>'confirmed'
],
[
'required' =>'Os campos têm de ser todos preenchidos!',
'email' =>'O email tem de ser válido!',
'unique'=>'O email inserido já está registado!',
'min.name' =>'O nome tem de ter pelo menos 2 caracteres!',
'min.password' =>'A password tem de ter no minimo 8 caracteres!',
'confirmed' =>'As passwords deverão coincidir!'
]
);
$user = new User;
$user->forget('password_confirmation');
$user->fill($request->all());
$user->save();
return redirect()->route('utilizadores.index')->with('Success','Utilizador registado com sucesso!');
}
路线:
Route::resource('/admin/utilizadores', 'UserController');
型号:
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $guarded = [
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token','password_confirmation'
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
表格:
<div class="modal-body">
<form action="{{route('utilizadores.store')}}" method="POST" id="adicionarid">
@csrf
<input type="email" name="email" class="inputtext data" placeholder="Email">
<div class="customselect data top1">
<select name="tipo">
<option value="revisor" selected disabled>Revisor</option>
<option value="editor">Editor</option>
<option value="revisor">Revisor</option>
</select>
</div>
<input type="text" name="name" class="inputtext" placeholder="Nome">
<input type="password" name="password" class="inputtext" placeholder="Palavra-passe">
<input type="password" name="password_confirmation" class="inputtext" placeholder="Confirmar palavra-passe">
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Fechar</button>
<button type="submit" class="btn btn-success" form="adicionarid">Guardar</button>
</div>
【问题讨论】:
-
请将代码作为文本(带有适当的标记)添加到您的问题中,而不是作为图像。
-
@NigelRen 完成,抱歉
-
dd($user) 在 $user->save() 之前查看 $user 是否按预期获取属性。
-
试试 $user->forget('password_confirmation');保存前。
-
如果有错误信息,请通过编辑添加到问题中
标签: php html laravel eloquent laravel-7