为了账号安全,请及时绑定邮箱和手机立即绑定

更新特定列 Laravel

更新特定列 Laravel

PHP
慕村225694 2022-11-04 17:21:43
我有一个编辑配置文件部分,我希望用户能够更新除密码之外的所有内容。我尝试删除控制器上的密码行,但它没有更新它只是显示与以前相同的数据。感谢任何帮助。这是我的编辑控制器<?phpnamespace App\Http\Controllers;use Illuminate\Support\Facades\Auth;use Illuminate\Http\Request;use App\User;class UserController extends Controller{  public function __construct()  {      $this->middleware('auth');  }  public function edit(User $user)  {      $user = Auth::user();      return view('users.edit', compact('user'));  }  public function update(Request $request,User $user)  {        $this->validate($request, [            'org_name' => 'required|string|max:255|unique:users,org_name,'.$user->id,            'email' => 'required|string|email|max:255|unique:users,email,'.$user->id,            'username' => 'required|string|max:255|unique:users,username,'.$user->id,            'password' => 'required|string|min:8',            'country' => 'required|string|max:255',            'org_type' => 'required|string|max:255',            'depart' => 'required|string|max:255',      ]);        $user->org_name = $request->get('org_name');        $user->email = $request->get('email');        $user->username = $request->get('username');        $user->password = bcrypt($request->get('password'));        $user->country = $request->get('country');        $user->org_type = $request->get('org_type');        $user->depart = $request->get('depart');        $user->save();        return back();    }}这是表格的一部分  <div class="form-group row">      <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>      <div class="col-md-6">          <input id="password" type="password" class="form-control" name="password" >          @error('password')              <span class="invalid-feedback" role="alert">                  <strong>{{ $message }}</strong>              </span>          @enderror      </div>  </div>
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

问题是,如果您没有发送密码,您将返回视图。


您需要在控制器上删除这些行:


$user->password = bcrypt($request->get('password'));

并删除:


'password' => 'required|string|min:8',

来自$this->validate($request,


然后更新您的视图,使其不发送密码:


<div class="form-group row">

  <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>


  <div class="col-md-6">

      <input id="password" type="password" class="form-control" name="password" >


      @error('password')

          <span class="invalid-feedback" role="alert">

              <strong>{{ $message }}</strong>

          </span>

      @enderror

  </div>

</div>


<div class="form-group row">

  <label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>


  <div class="col-md-6">

      <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">

  </div>

</div>

这将起作用。


查看完整回答
反对 回复 2022-11-04
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

尝试这个:


 public function update(Request $request)

  {

    $userId = auth()->user()->id;



    $this->validate($request, [

        'org_name' => 'required|string|max:255|unique:users,org_name,'.$user->id,

        'email' => 'required|string|email|max:255|unique:users,email,'.$user->id,

        'username' => 'required|string|max:255|unique:users,username,'.$user->id,

        'country' => 'required|string|max:255',

        'org_type' => 'required|string|max:255',

        'depart' => 'required|string|max:255',

      ]);

             $user = User::find($userId);

             $user->org_name = $request->get('org_name');

             $user->email = $request->get('email');

             $user->username = $request->get('username');

             $user->country = $request->get('country');

             $user->org_type = $request->get('org_type');

             $user->depart = $request->get('depart');

             $user->save();


            return back();


        }

  }


查看完整回答
反对 回复 2022-11-04
  • 2 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信