我查看了用户输入的个人资料详细信息,例如用户名,名字,姓氏等。上述内容一旦注册并定向到视图就会发生。仅当用户提供其个人资料详细信息时,才会将用户重定向为使用其余功能。用户还可以在将来更新配置文件详细信息。
此处,当用户想要在配置文件详细信息更新页面中稍后更新详细信息时,我已经在页面中填写了注册后给出的详细信息。这里的问题是,当我提交表单时,表示已经使用了用户名。这是视图的代码
<div class="form-group{{ $errors->has('username') ? ' has-error' : '' }}">
<label class="col-md-4 control-label">User Name</label>
<div class="col-md-6">
<input type="text" class="form-control" name="username" value="<?php echo \Auth::user()->username;?>">
@if ($errors->has('username'))
<span class="help-block">
<strong>{{ $errors->first('username') }}</strong>
</span>
@endif
</div>
</div>
但我没有在数据库中创建一个新行,但我正在更新现有列,但仍然会抛出相同的错误。这是我的控制器代码。
`public function prof_details(Request $request)
{
$post = $request->all();
$val=\Validator::make($request->all(),
[
'firstname' => 'required',
'lastname' => 'required',
'username' => 'required | unique:users',
'phone'=> 'required',
'nationality' => 'required',
'dobmonth' => 'required',
'dobyear' => 'required',
'dobday' => 'required',
'bio' => 'required',
'topics' => 'required',
]
);
if ($val ->fails())
{
return redirect()->back()->withErrors($val->errors());
}`
else
{
$data = array(
'firstname' => $post['firstname'] ,
'lastname' => $post['lastname'],
'username' => $post['username'],
'phone' => $post['phone'],
'nationality' => $nationality,
'dobmonth' => $post['dobmonth'],
'dobyear' => $post['dobyear'],
'dobday' => $post['dobday'],
'topics' => implode(',', $post['topics']),
'bio' => $post['bio'],
);
$updatedata = DB::table('users')->where('id',\Auth::user()->id)
->update($data);
if ($updatedata>0) {
return redirect('home');
}
else
{
return "something Went wrong";
}
这是一种正确的方法吗?或者哪一个是正确的方式? 提前谢谢。
答案 0 :(得分:0)
'username' => 'required | unique:users,id,'.\Auth::user()->id,
将id作为第三个参数插入,以便它不会检查您尝试更新的数据。
答案 1 :(得分:0)
用户名输入位于表单中,每次更新时,您的用户名都会更新,当您的代码中包含:'username'=&gt; '必需|独特:用户。
在这种情况下,如果用户名输入中没有更改文本,则“已经使用了用户名”错误显示。
也许您应该只在更新表单中保留常规数据。对于用户名更改,您可以使用仅用户名输入创建不同的视图。