Laravel 5.2:创建和编辑函数

时间:2016-02-24 09:23:44

标签: php laravel

我正在使用Laravel 5.2 ..
有一个user和一个profile表,它们之间是一对一的关系,
ProfileController
用户登录后,
当访问create功能时,
如果尚未创建用户的个人资料,请返回create页面,
否则,
重定向到edit功能。

问题:
如何编写create函数和edit函数?
我写了一部分 1,如何在id函数中编写参数create? 2,如何在edit函数中找到登录用户的个人资料?

ProfileController可:

    public function create()
    {
        $user = \Auth::user();
        if (!$user->profile) {
            return view('profile.create');
        }else{
           //how to write 'id'
           return redirect()->action('ProfileController@edit', ['id' => .......]);
        }
    }

    public function edit()
    {
       //how to find the profile of the login user?


       return view('profile.edit', compact('profile'));
    }

2 个答案:

答案 0 :(得分:2)

你需要这样的东西:

public function create()
{
    $user = \Auth::user();

    if(isset($user->profile)) {
        return redirect()->action('ProfileController@edit', ['id' => $user->id]);
    }

    return view('profile.create');
}

// Get the current user
public function edit(App\User $user)
{
    if($user->id === \Auth::user()->id) {
        $profile = \Auth::user()->profile;

        return view('profile.edit', compact('profile'));
    }
}

答案 1 :(得分:1)

$user = \Auth::user();

public function create()相同 变量$user将包含有关当前用户的信息

你可以创建一个像

这样的构造函数方法
use Illuminate\Contracts\Auth\Authenticatable;
protected $user;
public function __construct(Authenticatable $user){
   // $user is an instance of the authenticated user...
   $this->middleware('auth');
   $this->user = $user;
}
public function edit(){
   $user = $this->user;
}

阅读DOCS