Laravel表单模型绑定undefined $user


laravel form model binding undefined $user

我得到错误

未定义变量:user (View:项目D: ' wamp64 ' www ' '用户资源' views ' 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>

public function update()没有将变量$user传递给您作为重定向提供的视图。

通常当您编辑一个用户时,您希望将back()返回到编辑页面并进行更改。

我建议使用更简单的语法将变量传递给视图:

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

另一个可以改进的地方是路由