2017-05-08 82 views
0

如何在Laravel 5框架中管理帳戶 - MVC - 使用此代碼?我得到了這一切的默認呈現,但我仍然得到這個代碼未定義的變量請求 - 請你的答案可以理解的:如何在Laravel 5框架中管理帳戶 - MVC - 使用此代碼?

UserController中:

public function account(&$data, $request){ 
    User::get_user(self::$data,$request); 
    self::$data['title'] = self::$data['title'] . 'Edit Account'; 
    return view('forms.account', self::$data); 
} 

public function postAccount(AccountRequest $request){ 
    User::edit_user($request); 
    return redirect(''); 
} 

AccountRequest:

public function rules() 
{ 
    return [ 
     'name' => 'required|min:2|max:70', 
     'email' => 'required|email|unique:users,email', 
     'password' => 'required|min:6|max:10|confirmed', 
    ]; 
} 

型號:

static public function get_user(&$data,$request){ 
    $sql = "SELECT * FROM users WHERE id = ". Session::get('user_id'); 
    $data['users'] = DB::select($sql); 
} 

static public function edit_user(&$data,$request) { 

    $id = $data['id']; 
    $sql = "SELECT * FROM users WHERE id = ".$id; 
    $getVal = DB::select($sql); 
    if($data['name'] || $data['password'] || $data['email']){ 
     if($data['name']){ 
      DB::update("UPDATE users SET name = ? WHERE id = ?",[$data['name'],$id]); 
      session(['user_name' => $data['name']]); 
     } 
     if($data['password']){ 
      DB::update("UPDATE users SET password = ? WHERE id = ?",[bcrypt($data['password']),$id]); 
     } 
     if($data['email']){ 
      DB::update("UPDATE users SET email = ? WHERE id = ?",[$data['email'],$id]); 
     } 
    } 

    Session::flash('sm',$request['name'] . '`s Has Been Updated'); 
} 

Web: Route :: get('use r/account','UserController @ account'); Route :: post('user/account','UserController @ postAccount');

HTML:

@extends('master') 

@section('content') 
<div class="container"> 
<div class="row"> 
<div class="col-md-12 text-center"> 
<h1>Edit Your Account -</h1> 
</div> 
<div class="row" style="margin-left:30%;"> 
    <div class="col-md-6"> 
    <form action="" method="post"> 
    {{ csrf_field() }} 
    <input type="hidden" name="user_id" value="{{ $user['id'] }}"> 
    <div class="form-group"> 
     <label for="name"></label> 
     <input value="{{ $user['name'] }}" type="text" name="name" 
class="form-control" id="name" placeholder="Name"> 
     </div> 
     <div class="form-group"> 
     <label for="email"></label> 
     <input value="{{ $user['email'] }}" type="text" name="email" 
class="form-control" id="email" placeholder="Email"> 
     </div> 
     <div class="form-group"> 
     <label for="editpassword"></label> 
     <input type="password" name="password" class="form-control" 
    id="editpassword" placeholder="Edit Password"> 
    </div> 
    <div class="form-group"> 
     <label for="editpasswordconf"></label> 
     <input type="password" name="password_confirmation" class="form- 
control" id="editpasswordconf" placeholder="Confirm New Password"> 
    </div> 
    <div class="form-group text-center"> 
    <input type="submit" name="submit" value="Update Details" class="btn 
btn-primary"> 
    </div> 
    </form> 
    </div> 
    </div> 
</div> 
@endsection 
+0

我不知道從哪裏開始。你根本沒有正確使用雄辯。 – jfadich

+0

錯誤的根源看起來在這個代碼中:User :: edit_user($ request);'edit_user()方法有兩個參數,但你只提供一個參數。但是這些代碼中的大部分都是不必要的或者不正確的類。請參閱@Jeffs回答更多「Laravel」的方式。 – jfadich

回答

0

你的AccountController應該是這樣的:

public function edit($request, Account $account){ 
    return view('forms.account', [ 
    'account' => $account, 
    'title' => 'Edit Account' 
    ]); 
} 

public function update(AccountRequest $request, Account $account){ 
    $account->update($request->all()); 
    Session::flash('sm', $account->name . ' Has Been Updated'); 
    return redirect()->back(); 
} 

AccountRequest:

public function rules() 
{ 
    return [ 
    'name' => 'required|min:2|max:70', 
    'email' => 'required|email|unique:users,email', 
    'password' => 'required|min:6|max:10|confirmed', 
    ]; 
} 

這大約是很多代碼,你需要爲這個過程.. 。請閱讀說明文檔https://laravel.com/docs/5.4/eloquent

+0

請注意,必須在Account模型上設置'protected $ fillable'或'protected $ guarded'數組才能使其工作。 – jfadich