我正在使用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();
}
答案 0 :(得分:2)
在控制器的顶部,您可以看到authcontroller使用特征
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
所以return User::create
会将新注册的用户返回到将处理登录的AuthenticatesAndRegistersUsers
,这就是为什么在您注册后自动登录
,区别在于您未登录(在您共享的第二个代码中)
这就是我想的所有
答案 1 :(得分:2)
此create()方法不会直接在路径中的任何位置引用,因此它不必返回视图(响应)。
最有可能的是,它被同一个控制器的另一个方法使用 - 其他方法依赖于create()来创建用户,然后重定向或呈现视图。
简而言之,并非所有控制器方法都必须返回HTTP响应。一些方法是“内部的” - 它们是帮助者,可供其他方法使用。
答案 2 :(得分:2)