【问题标题】:How to Manage Accounts in the Laravel 5 FrameWork - MVC - with this code?如何使用此代码在 Laravel 5 框架 - MVC 中管理帐户?
【发布时间】:2017-05-08 21:11:05
【问题描述】:

如何使用此代码在 Laravel 5 框架 - MVC 中管理帐户?我得到了默认演示文稿的所有内容,但我仍然收到带有此代码的未定义变量请求 - 请您的回答将不胜感激:

用户控制器:

 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('');
}

帐户请求:

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');
}

网站: Route::get('user/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

【问题讨论】:

  • 我不知道从哪里开始。你根本没有正确使用 Eloquent。
  • 错误的根源似乎在这段代码中User::edit_user($request);edit_user() 方法有两个参数,但您只提供一个。但大部分代码是不必要的或在不正确的类中。请参阅@Jeffs 答案以了解更多“Laravel”的执行方式。

标签: laravel-5


【解决方案1】:

您的 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();
}

帐户请求:

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

这与此过程所需的代码差不多...请阅读 Eloquent https://laravel.com/docs/5.4/eloquent 的文档

【讨论】:

  • 请注意,必须在 Account 模型上设置 protected $fillableprotected $guarded 数组才能使其正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
相关资源
最近更新 更多