我想在我的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']),
]);
}
}
例如,在我的ajax请求 /auth/register/
中,它从不回应我指示的回报,它也一直试图将我重定向到 /home
. 我这样做是因为我没有传递 /auth/register
表单,而是传递了一个带有数据的Javascript数组,不仅创建了用户(电子邮件,密码等),还提供了用户需要加入的应用程序 .
最后,我想在创建用户时创建具有该数据的Application模型,但是现在我不确定我的函数是否被正确调用!
EDIT: 所以,看起来 __construct() 函数导致问题......我应该摆脱它吗?我不明白为什么我需要发表评论才能从 postRegisterI()
获得我的回报?
2 回答
首先,确保在调用
Route::auth()
之前声明了新路由 . 否则,Laravel将忽略您的添加,并将始终调用Easy Auth附带的那个 . 第二 . 为什么要使用具有不同名称的其他方法覆盖方法?只需在AuthController中创建一个方法postRegister,您就会自动覆盖驻留在Trait中的方法 . 所以你不应该是正确的解决方案 .另一件事,对于ajax请求,请确保验证请求的类型为ajax:
此控制器用于检查注册规则,创建用户以及重定向到重定向路径 . 它不是为ajax处理而设计的,因此,您需要为它添加代码
也许这个话题会对你有所帮助custom register