laravel 5.2

时间:2016-07-25 09:45:50

标签: php laravel

我查看了用户输入的个人资料详细信息,例如用户名,名字,姓氏等。上述内容一旦注册并定向到视图就会发生。仅当用户提供其个人资料详细信息时,才会将用户重定向为使用其余功能。用户还可以在将来更新配置文件详细信息。

此处,当用户想要在配置文件详细信息更新页面中稍后更新详细信息时,我已经在页面中填写了注册后给出的详细信息。这里的问题是,当我提交表单时,表示已经使用了用户名。这是视图的代码

<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";
}

这是一种正确的方法吗?或者哪一个是正确的方式? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

'username' => 'required | unique:users,id,'.\Auth::user()->id,

将id作为第三个参数插入,以便它不会检查您尝试更新的数据。

答案 1 :(得分:0)

用户名输入位于表单中,每次更新时,您的用户名都会更新,当您的代码中包含:'username'=&gt; '必需|独特:用户

在这种情况下,如果用户名输入中没有更改文本,则“已经使用了用户名”错误显示。

也许您应该只在更新表单中保留常规数据。对于用户名更改,您可以使用仅用户名输入创建不同的视图。