我想在我的Auth控制器中覆盖Laravel 5.2的public function postRegister()
。
我首先改变路线:
Route::post('/auth/register', 'Auth\AuthController@postRegisterI');
在我的Auth控制器中,我现在有了这个新的postRegisterI()
方法,反对依赖基础postRegister()
。但我对这种新方法的改变似乎并不适用?
由于某种原因,它仍然指向postRegister()
吗?我的AuthController看起来像这样:
class AuthController extends Controller
{
/*
|--------------------------------------------------------------------------
| Registration & Login Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users, as well as the
| authentication of existing users. By default, this controller uses
| a simple trait to add these behaviors. Why don't you explore it?
|
*/
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest', ['except' => 'getLogout']);
}
public function postRegisterI(Request $request)
{
return print_r($request);
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
//Auth::login($this->create($request->all()));
$this->create($request->all());
//return redirect($this->redirectPath());
return;
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255|unique:users',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|confirmed|min:2',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}
例如,在我向/auth/register/
发出的ajax请求中,它在我指示的情况下从不回复我的回复,它也一直试图将我重定向到/home
。我这样做是因为我没有传递/auth/register
表单,而是传递了一个包含数据的Javascript数组,不仅创建了用户(电子邮件,密码等),还提供了用户需要加入的应用程序
最终,我想在创建用户时创建包含该数据的Application模型,但是现在我不确定我的函数是否被正确调用!
编辑:因此,看起来 __construct()
功能导致问题...我应该摆脱它吗?我不明白为什么我需要发表评论以从postRegisterI()
获得我的回报?
答案 0 :(得分:0)
首先,确保在调用Route::auth()
之前声明了新路线。否则,Laravel将忽略您的添加,并将始终调用Easy Auth附带的那个。
第二。为什么要使用具有不同名称的其他方法覆盖方法?只需在AuthController中创建一个方法postRegister,您就会自动覆盖驻留在Trait中的方法。因此,您不必担心必须添加其他方法和路线。除非你想拥有一个多身份验证系统,在这种情况下,这不是正确的解决方案。
另一方面,对于ajax请求,请确保验证请求的类型为ajax:
if ($request->ajax()){
//Code here
return response()->json([],200);
}
此控制器用于检查注册规则,创建用户以及重定向到重定向路径。它不是为ajax处理而设计的,因此,您需要为它添加代码
答案 1 :(得分:-1)
也许这个主题可以帮助你custom register