当前位置: 首页 > 知识库问答 >
问题:

Laravel 5.1-管理面板-更新用户

东方俊材
2023-03-14

我在编辑注册用户时遇到问题,我需要更新用户信息,但我遇到问题:

  • 更新电子邮件用户,(错误电子邮件存在),我需要忽略用户编辑的电子邮件。
  • 其他信息不更新。
  • 更新密码,如果输入新密码。

我正在使用资源控制器。

UserController.php

namespace dixard\Http\Controllers\Admin;

use Illuminate\Http\Request;

use dixard\Http\Requests;
use dixard\Http\Controllers\Controller;

// colleghiamo al modello

use dixard\User;

// ci serve per validare
use Validator;

//per aggionare password
use Hash;    


public function update(Request $request, User $user)
        {

            $id= $user->id;
            // i want ignora id of user edited
            $rules = [

                'name' => 'required',

                'lastname' => 'required',

                'username' => 'required|max:50|',

                'birth' => 'required',

                'country' => 'required',

                'usertype' => 'required',

                'email' => 'required|email|unique:users'.',email,' . $id,


            ];

            $messages = [


                'name.required' => 'Campo nome richiesto',
                'lastname.required' => 'Campo cognome richiesto',
                'username.required' => 'Campo username richiesto',
                'username.max' => 'Campo massimo 50 caratteri',
                'birth.required' => 'Campo nascita richiesto',
                'country.required' => 'Campo paese richiesto',
                'usertype.required' => 'Campo tipologia richiesto',
                'email.required' => 'Campo email richiesto',
                'email.email' => 'formato email errato ',

                'email.unique' => 'Email già esistente',
                'password.min' => 'Campo password minimo 4 caratteri',
                'password.max' => 'Campo password massimo 18 caratteri',



            ];


            $validator = Validator::make($request->all(), $rules, $messages);
            if ($validator->fails()){

                return redirect('admin/user')->withErrors($validator);

            }
            // if there is not any error go to update
            else{           

                // if email id different by input, so if email input update also email
                if( $user->email != $request->email ){

                $s = new User;

                $data = array(

                     'name'             => $request->get('name'),
                'lastname'     => $request->get('lastname'),
                'username'          => $request->get('username'),
                'email'         => $request->get('email'),
                'password'      => $request->get('password'),
                'birth'         => $request->get('birth'),
                'country'       => $request->get('country'),
                'usertype'          => $request->get('usertype'),


                );

                $s->where($id, $request->get('id'))->update($data);

                return redirect('admin/user')->with('message', 'Updated successfully');
                }

                // If email input doesnt change update all ( not email)
                else{

                $s = new User;

                $data=array(

                    'name'          => $request->get('name'),
                'lastname'     => $request->get('lastname'),
                'username'          => $request->get('username'),

                'password'      => $request->get('password'),
                'birth'         => $request->get('birth'),
                'country'       => $request->get('country'),
                'usertype'          => $request->get('usertype'),


                     );

                $s->where($id, '=', $request->get('id'))->update($data);

                return redirect('admin/user')->with('message-error', 'error');


                }

            }
        }

PHP路径

Route::resource('admin/user','Admin\UserController');



Route::bind('user', function($user){

    return dixard\User::find($user);
});

model USER.PHP

    protected $table = 'users';


    protected $fillable = [

    'name',
    'username',
    'lastname',
    'birth',
    'profile',
    'country',
    'usertype',
    'email',
    'password',
    'social',
    'confirm_token',
    'active',

    ];

    // Ogni utente HA tanti prodotti.

    public function products() 
    {

        return $this->hasMany('dixard\Product');    

    }


    protected $hidden = ['password', 'remember_token'];

    // setare la password ogni volta che viene cambiata

    public function setPasswordAttribute($valor){
        //se non è vuota viene applicato hash
       if(!empty($valor)) {

        $this->attributes['password']= \Hash::make($valor);   
       }


    }

PHP查看页面

{!!Form::open(['route'=

                )!!}


                <input type="hidden" name="_method" value="PUT">


                  <div class="form-group">
                    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">Nome<span class="required">*</span>
                    </label>
                    <div class="col-md-6 col-sm-6 col-xs-12">
                      <input type="text"  id="name"  name="name" class="form-control col-md-7 col-xs-12" value="{{$user->name}}">
                    </div>
                  </div>


                  <div class="form-group">
                    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="lastname">Cognome<span class="required">*</span>
                    </label>
                    <div class="col-md-6 col-sm-6 col-xs-12">
                      <input type="text" id="lastname"  name="lastname" class="form-control col-md-7 col-xs-12" value="{{$user->lastname}}">
                    </div>
                  </div>

                  .... So for all fields inputs


                      <a href="{{url('admin/user')}}" class="btn btn-warning">cancel</a>
                      <button type="submit" class="btn btn-success">update</button>
                    </div>
                  </div>


                {!! Form::close()!!}

谢谢你的帮助!

共有2个答案

慕容渊
2023-03-14

更改:

'email' => 'required|email|unique:users'.',email,' . $id,

致:

'email'  =>  'required|email]unique:users,email,'.$id,
姚洲
2023-03-14

更改您的路线,并向其添加用户id,因为这是一种更新方法:

{!! Form::open(['route'=> ['admin.user.update', $user->id], ...])!!}

您没有将用户ID传递给路由,因此在您的控制器中,用户可能为空。在这种情况下,验证不会通过,因为id为null,因此不会跳过当前用户,并且它会检查用户表中的所有记录。

 类似资料:
  • 我在上一篇文章中尝试了一个答案:DateTimeField不显示在管理系统中 但也许我太愚蠢了,无法理解。 此时未显示已创建的\u的字段。谁能给我指一下正确的方向吗? 模型 管理员 编辑:

  • Flarum 管理面板是一个用户友好的论坛管理界面。 它只对「管理」组 的用户开放。 要进入管理界面,只需点击屏幕右上方您的 用户名, 选择 后台管理 即可。

  • 我是一个Java GUI初学者,在让我的面板按照我想要的方式进行更新方面遇到了一些麻烦。基本上,当用户点击我的GUI中的一个按钮时,屏幕上当前的形状应该改变为与按钮按下对应的任何形状。我的代码在下面。更新后的形状在显示前被原始形状覆盖的问题。 最后,这里是我的框架类: 谢谢你的帮助!

  • 为了便于统一管理,Seafile 在 Web 界面提供了系统管理员控制面板。使用管理员账号登陆 Seafile Web 页面,进入“系统管理”界面,即可进行系统设置,用户管理,资料库统计,日志查询等一系列管理操作。 如何进入“系统管理”页面 首先,要使用具有管理员身份的用户账号,通过浏览器登陆 Seafile Web界面;然后鼠标点击右上角头像图标,在下拉菜单栏中选择“系统管理”: 进入“系统管理

  • 这篇文档将全面覆盖热更新管理器 AssetsManager 的设计思路,技术细节以及使用方式。由于热更新机制的需求对于开发者来说可能各不相同,在维护过程中开发者也提出了各个层面的各种问题,说明开发者需要充分了解热更新机制的细节才能够定制出符合自己需要的工作流。所以这篇文档比较长,也尽力循序渐进得介绍热更新机制,但是并不会介绍过多使用层面的代码,对于想要先了解具体如何使用热更新机制来更新自己游戏的开

  • 在本章中,我们将了解管理面板页面如何在Grav中工作。 通过页面可以轻松访问您的网站创建,编辑或删除内容。 在管理面板页面中,您可以查看为您的站点创建的页面列表,还可以为您的站点创建新的模块化页面或非模块化页面。 添加新页面 您可以看到pages管理面板顶部有三个按钮,如下面的屏幕截图所示。 Back - 这将返回到管理页面的仪表板。 Add Page - 这将创建一个新的非模块化内容。 Add