2016-11-04 61 views
0

我得到的錯誤

未定義的變量:用戶(查看: d:\ wamp64 \ WWW \項目\資源\意見\ ADMIN \用戶\ updateUser.blade.php )

但我找不到爲什麼$ user是一個未定義的變量。 對於我使用laravel表單模型綁定的表單。

UserController.php

<?php namespace App\Http\Controllers; 
use App\Http\Requests\UserFormRequest; 
use App\Http\Controllers\Controller; 
use Illuminate\Support\Facades\Session; 
use \App\Http\Requests\Auth\RegisterRequest; 
class UserController extends Controller { 

public function index() 
{ 
    // show the list of all users 
    $users = \App\User::all(); 
      $User = new \App\User(); 
      $userRoleOptions = \App\Roles::pluck('role_name', 'id'); 
    return view('admin.user.indexUser', ['users' => $users, 'User' => $User, 'userRoleOptions' => $userRoleOptions]); 
} 
/** 
* Show the form for creating a new resource. 
* 
* @return Response 
*/ 
public function delete($id) 
{ 
     //find the right user 
    $user = \App\User::findorfail($id); 
      // delete the found user 
    $user->delete(); 
    $users = \App\User::all(); 
    return view('admin.user.indexUser')->with('users', $users); 
} 

/** 
* Store a newly created resource in storage. 
* 
* @return Response 
*/ 
protected function create(RegisterRequest $request) { 
    //validate the user input 
    $this->validate($request, [ 
      'name' => 'required|max:255', 
      'email' => 'required|email|max:255|unique:users', 
      'password' => 'required|confirmed|min:6' 
    ]); 
    //fill the input in the database 
    $temp = \App\User::create(); 
    $temp->name = $request->name; 
    $temp->email = $request->email; 
    $temp->password = bcrypt($request->password); 
     $temp->role_id = $request->role_id; 
    $temp->save(); 
    //return user feedback 
    Session::flash ('flash_message', 'Account is succesvol aangemaakt!'); 
    $users = \App\User::all(); 
     $User = new \App\User(); 
     $userRoleOptions = \App\Roles::pluck('role_name', 'id'); 
    return view('admin.user.indexUser', ['users' => $users, 'User' => $User, 'userRoleOptions' => $userRoleOptions]); 
} 
/** 
* Show the form for editing the specified resource. 
* 
* @param int $id 
* @return Response 
*/ 
public function edit($id) 
{ 
    //find the right user 
    $user = \App\User::find($id); 
     $User = new \App\User(); 
     $userRoleOptions = \App\Roles::pluck('role_name', 'id'); 
    //return the edit page of the fount user 
    return view('admin.user.updateUser', array('user' => $user, 'User' => $User, 'userRoleOptions' => $userRoleOptions)); 
} 
public function update(UserFormRequest $request) 
{ 
    // find the right user 
    $user = \App\User::findorfail($request->input('id')); 
     // validate user input 
    $this->validate ($request, [ 
      'name' => 'required', 
      'email' => 'required' 
    ]); 
    // this 'fills' the user model with all fields of the Input that are fillable 
    // if statment checks if password is right en if filled it changes the password 
    $user->name = $request ['name']; 
    $user->email = $request ['email']; 
    if (strlen ($request ['password']) > 6) { 
     $user->password = bcrypt ($request ['password']); 
    } elseif (strlen ($request ['password']) > 0) { 
     return redirect()->back(); 
    } 
    $user->role_id = $request['role_id']; 

    $user->save(); // no validation implemented 
    Session::flash ('flash_message', 'Account is succesvol gewijzigd!'); 
    $users = \App\User::all(); 
    $User = new \App\User(); 
    $userRoleOptions = \App\Roles::pluck('role_name', 'id'); 
    return view('admin.user.updateUser', ['users' => $users, 'User' => $User, 'userRoleOptions' => $userRoleOptions]); 
} 
    } 

模型用戶

<?php namespace App; 

    use Illuminate\Auth\Authenticatable; 
    use Illuminate\Database\Eloquent\Model; 
    use Illuminate\Auth\Passwords\CanResetPassword; 
    use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
    use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 

    class User extends Model implements AuthenticatableContract, CanResetPasswordContract { 

use Authenticatable, CanResetPassword; 

/** 
* The database table used by the model. 
* 
* @var string 
*/ 
protected $table = 'users'; 

/** 
* The attributes that are mass assignable. 
* 
* @var array 
*/ 
protected $fillable = ['name', 'email', 'password', 'role_id']; 

/** 
* The attributes excluded from the model's JSON form. 
* 
* @var array 
*/ 
protected $hidden = ['password', 'remember_token']; 

public function mail_entry(){ 
    return $this->hasOne('\App\Mail_entry'); 
} 


public function role() 
{ 
    return $this->hasMany('\App\Roles', 'id', 'role_id'); 
} 
    } 

UpdateUser兩個葉片

<div class="modal fade" id="user-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 

<div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
      <h4 class="modal-title" id="myModalLabel">Wijzigen</h4> 
     </div> 

     <div class="modal-body"> 
      <div stype="padding:10px;"> 
      {!! Form::model($user, ['route' => 'update_user', 'id' => 'edit-user-form']) !!} 

       @include('admin/user/partials/_user-form', ['user' => $user, 'submit_tekst' => 'Gebruiker updaten']) 

      {!! Form::close() !!} 
      </div> 
     </div> 

     <div class="modal-footer"> 
      <button type="button" class="btn btn-default" id="save-user">Opslaan</button> 
      <button type="button" class="btn btn-default" data-dismiss="modal">Annuleer</button> 
     </div> 
    </div> 
</div> 

<script type="text/javascript"> 

    var x = $('#user-modal :submit'); 
    console.log(x); 

    $('#user-modal :submit').remove(); 

    $('#save-user').click(function(){ 

     $.ajax({ 
      url : '{!! URL::route('update_user'); !!}', 
      type: 'post', 
      data : $('#edit-user-form').serialize(), 
      success : function(result){ 
       console.log("succes" + result); 

      }, 
      error: function(result) { 
       console.log("error" + result); 
       if(result.status === 422) { 
        //process validation errors here. 
        var errors = result.responseJSON; //this will get the errors response data. 

        //show them somewhere in the markup 
        //e.g 
        errorsHtml = '<div class="alert alert-danger"><ul>'; 

        $.each(errors, function(key, value) { 
         errorsHtml += '<li>' + value[0] + '</li>'; //showing only the first error. 
        }); 
        errorsHtml += '</ul></div>'; 

        $('#edit-user-form').append(errorsHtml); 
       } 
      } 
     }); 
     console.log('gelukt'); 
    }); 
</script> 

+0

不應該'公共函數更新(UserFormRequest $ request)'不應該返回?您正在返回的視圖沒有**用戶** var傳遞給它。我會推薦使用'return view('path.to.view',compact('user','users','User');' – Mihailo

+0

謝謝你的重播,我改回了返回重定向() - > route('user'); 這解決了錯誤 – Remco

+0

沒問題,我將這個答案作爲回答,讓其他有類似問題的人可以看到,你可以根據情況使用helper函數back()。 – Mihailo

回答

0

的不傳遞變量$用戶作爲重定向提供的視圖。

通常當您編輯用戶時,您想要將back()返回到編輯頁面並進行更改。

我會建議使用更簡單的語法傳遞變量視圖:

return view('path.to.view', compact('user', 'users', 'foo', 'bar'));

可以改進的另一點是在路線。請閱讀Laravel Implicit Binding