使用laravel 5和Auth更新登录的用户帐户设置

时间:2015-03-11 23:05:42

标签: php laravel laravel-5

我是laravel(实际上是任何PHP框架)的新手,但是对于PHP来说并不陌生。我创建了我的第一个项目,并设法使用预建的Auth系统登录。我创建了一个名为AccountSettings的新路由,控制器和模型,所以当我转到/account时,它会预先填入登录用户帐户信息(姓名和电子邮件)

Route::get('account', 'AccountSettingsController@index');
Route::post('account', 'AccountSettingsController@updateAccount');

当我点击表单上的提交按钮时,我可以看到我正在发布的表单数据(姓名,电子邮件和_token);

我的AccountSettingsController是:

<?php namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\AccountSettings;
use Input;
use Request;
use Auth;

class AccountSettingsController extends Controller {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        return view('AccountSettings/index');
    }

    public function updateAccount()
    {
        var_dump(Input::all());
        return view('AccountSettings/index');
    }
}

我尝试通过以下方式保存用户信息:

public function updateAccount()
{
  $id = Auth::user()->id;
  $user = User::find($id);
  $user->name = Request::input('name');
  $user->email = Request::input('email');
  $user->save();
  return view('AccountSettings/index');
}

但导致错误User not found。可以理解,因为它不在我的use顶部。我试过了use User,但这没效果。

另外一件事,这种类型的东西应该在模型中处理,对吗?我一直试图解决这个问题几个小时,我搜索的任何东西都没有真正相关。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:11)

在Laravel 5中,您需要use App\User;位于文件顶部,而不是use User;(绝对不是use Users;)。 User模型位于App命名空间中。

旁注:这是不必要的:

$id = Auth::user()->id;
$user = User::find($id);

只是做:

$user = Auth::user();

并获得更清晰的代码和更少的数据库查询。

相关问题