Данные формы не могут быть обновлены - PullRequest
0 голосов
/ 30 января 2020

[! [Поля сохраняют старые значения] [1]] [1]

Я пытаюсь обновить форму с именем, адресом электронной почты и ролью после того, как я установил роли и разрешения, используя Laratrust, мой userController:

public function update(Request $request, User $user)
 {
    dd($request->all());  // here  Array of data is successfully updated
    $request->validate([
        'name'=>'required',
        'email'=>'required|unique:users,email',
        'role_id'=>'required|numeric',
    ]);

    $user->update($request->all());
     $user->syncRoles($request->role_id); 
    session()->flash('success','Data updated successfully');
      return redirect()->route('dashboard.users.index');   //failed to redirect
 }  //end of Update Fn

Мой edit.blade имеет это:

 <form  method="POST" action="{{route('dashboard.users.update', $user->id)}}">
        @method('PUT')

Примечание: когда я запрашиваю dd $, он дает массив данных, обновленный успешно за исключением случаев, когда я вставляю dd после строки:

$user->syncRoles($request->role_id);    //revise admin
     dd($request->all());

Я получил следующую ошибку: ErrorException Недопустимый аргумент для foreach () C: \ XAMPP \ HTDOCS \ MyNet \ поставщика \ santigarcor \ laratrust \ SRC \ Черты характера \ LaratrustUserTrait php:. 343

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Код должен быть: 1- $ user-> attachRole ($ request-> role_id); Функция upsate ins 2- Указатель должен иметь:

 @foreach($user->roles as $role)
       <h5>{{$role->name}}</h5>
 @endforeach


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

    $request->validate([
        'name'=>'required',
        'email'=>'required',
        'role_id'=>'required|numeric',
    ]);
    $user->name = $request->Name;
    $user->email = $request->email;
    $user->attachRole($request->role_id);

    $user->update($request->all());
    $user->refresh(); // Reload User or $user->load('roles');
    session()->flash('success','Data updated successfully');
      return redirect()->route('dashboard.users.index');
 }  //end of updates
0 голосов
/ 30 января 2020

Попробуйте следующий код:

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

    $request->validate([
        'name'=>'required',
        'email'=>'required|unique:users,email',
        'role_id'=>'required|numeric',
    ]);

    $user->attachRole($request->role_id);
    $user->update($request->all());
    $user->refresh(); // Reload User or $user->load('roles');
    session()->flash('success','Data updated successfully');
      return redirect()->route('dashboard.users.index');  
 }
...