我在 Illuminate/Foundation/Auth/RegistersUsers.php
中的 getRegister();
上有一个 Event::fire();
/p>
但我知道这不是它的正确位置:
public function postRegister(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
Auth::login($this->create($request->all()));
Event::fire(new UserWasRegistered(Auth::id()));
return redirect($this->redirectPath());
}
如何添加事件,使其不在 Illuminate 和 AuthController 中?
编辑:事件进展顺利。我只需要知道哪个位置最适合发射它?
最佳答案
你有这个:
protected $listen = [
UserWasRegistered::class => [
SendActivationEmail::class,
CreateNewModel::class,
],
];
现在只需转到控制台/命令提示符并运行 php artisan event:generate
然后转到 App\Events
和 App\Listeners
文件夹并找到适当的类并根据需要实现,因为 Laravel
将为您生成这些类。
更新:
其实你的问题没说清楚。您不应该修改该特征,而是可以在任何类中使用该特征并使用该特征的方法。在这种情况下,您可以实现自定义注册。为此,只需使用 App\Http\Controllers\Auth\AuthController
并覆盖 postregister
方法:
namespace App\Http\Controllers\Auth;
// ...
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers;
// Other methods ...
public function postRegister(Request $request)
{
// Do the coding here
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
Auth::login($this->create($request->all()));
// Fire Event Here...
return redirect($this->redirectPath());
}
}
在此 Controller (App\Http\Controllers\Auth\AuthController)
中,您可以使用它来实现自定义postRegister
方法。
关于php - 当用户注册时,我在 Laravel 5.1 中的哪里添加事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211626/