我想根據表單中設定的值取消選中/選中“活動”用戶的復選框。在 MySQL 資料庫中,我在表“users”中添加了一個型別為“tinyint (1)”的“活動”列。我有一個表單來編輯用戶的不同值,比如姓名、電子郵件等。當我提交表單時,除了復選框之外,所有內容都更新得很好,所以......我不明白如何確保它是未檢查值更改為 0。
- 我的用戶控制器中有這個:
/**
* Show the form for editing the specified resource.
*
* @param \App\User $user
* @return \Illuminate\Http\Response
*/
public function edit($userID)
{
//
$user = User::query()->findOrFail($userID);
$roles = Role::pluck('role_name','id');
$departments = Department::all(['id','department_name']);
return view('user.edit',compact('user','roles','departments'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\User $user
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $usuarioID)
{
$user = User::query()->findOrFail($usuarioID);
$user->update($request->only('name','email','password', 'roles', 'departament_id', 'active'));
$user->roles()->sync($request->roles);
return back()->with('Success','User updated successfully');
}
- 這是在我的編輯視圖中
<form method="POST" action="{{route('User.update', $user->id)}}" class="user" enctype="multipart/form-data"">
{!! method_field('PUT') !!}
@csrf
@include('user.form')
<!--Roles-->
<br>
<div class=" row justify-content-center text-center">
<div class="col-md-6">
<h5 class="txt-unam text-center text-primary">@lang('edit.Roles')</h5>
@foreach($roles as $id => $name)
<input type="checkbox" value="{{$id}}" {{$user->roles->pluck('id')->contains($id) ? 'checked' : ''}} name="roles[]">
{{ $name }}
@endforeach
</div>
<div hljs-number">6">
Active <input type="checkbox" name="active" value="1" {{$user->active ? 'checked' : ''}}>
</div>
</div>
<br>
<div hljs-string">">
<button hljs-string">" type="submit" value="Update">@lang('edit.Update')</button>
<button hljs-string">" onclick="cancel()" value="Cancel">@lang('edit.Cancel')</button>
</div>
</form>
角色的復選框作業正常,但“活動”復選框不是......該值保持在 1,我不知道為什么。有人能幫我嗎?
uj5u.com熱心網友回復:
當您的復選框未選中時,您在請求中沒有任何價值。因此,您可以使用 update 方法中的 isset() 函式進行檢查,如下所示:
public function update(Request $request, $usuarioID)
{
$input = $request->only('name','email','password', 'roles', 'departament_id', 'active');
if(!isset($request->active))
$input['active'] = false;
$user = User::query()->findOrFail($usuarioID);
$user->update($input);
$user->roles()->sync($request->roles);
return back()->with('Success','User updated successfully');
}
此外,請確保您在受保護的 User.php 模型中添加了“活動”欄位 $fillable。
uj5u.com熱心網友回復:
For checkbox is unchecked$request->only(... ,'active')陣列中不存在活動鍵。所以在更新方法中是這樣的。
$user->update(['name' => $request->name, 'email' => $request->email, 'password' => $request->password, 'roles' => $request->roles, 'department_id' => $request->department_id])
這就是為什么不更新。
你可以試試這個。
$data = $request->only('name','email','password', 'roles', 'department_id');
$data['active'] = $request->get('active',0); // if checkbox is unchecked is 0 instead of null
$user->update($data);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/408102.html
標籤:
