关于"返回"在Laravel 5.2的AuthController中

时间:2016-05-12 23:46:49

标签: php laravel

我正在使用Laravel 5.2,我不理解"返回"在AuthController中,如下所示:

AuthController:(开箱即用)

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'role' => $data['role'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
}

我能理解:

return view('index',compact('articles'));

return redirect()->action('ArticlesController@index');

但我无法理解上面的return User::create([... ]);

下面的写作有什么不同吗?
重写:

protected function create(array $data)
{
    User::create([
        'name' => $data['name'],
        'role' => $data['role'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
    return back();
}

3 个答案:

答案 0 :(得分:2)

在控制器的顶部,您可以看到authcontroller使用特征

class AuthController extends Controller
{
    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

所以return User::create会将新注册的用户返回到将处理登录的AuthenticatesAndRegistersUsers,这就是为什么在您注册后自动登录

,区别在于您未登录(在您共享的第二个代码中)

这就是我想的所有

答案 1 :(得分:2)

此create()方法不会直接在路径中的任何位置引用,因此它不必返回视图(响应)。

最有可能的是,它被同一个控制器的另一个方法使用 - 其他方法依赖于create()来创建用户,然后重定向或呈现视图。

简而言之,并非所有控制器方法都必须返回HTTP响应。一些方法是“内部的” - 它们是帮助者,可供其他方法使用。

答案 2 :(得分:2)

User :: create function正在为您创建一个用户。用户是一个模型,它返回一个集合,其中包含用户详细信息。因此,在第一种情况下,您将返回用户凭据。 Eloquent总是返回一个集合。阅读更多here.

在第二种情况下,back()函数会将您重定向回上一页。您不在此处发送用户的详细信息。阅读更多here.