laravel-8 - 如何在 laravel 8 中调度事件?
问题描述
我在我的应用程序中手动实现用户注册,但我无法理解 laravel 8 文档的这一部分
如果您在应用程序中手动实现注册而不是使用入门工具包,则应确保在用户注册成功后调度 Illuminate\Auth\Events\Registered 事件:
use Illuminate\Auth\Events\Registered;
event(new Registered($user));
我尝试了不同的方法,但最后我没能理解这一点并且没有发送电子邮件这是我的注册码 public function storeUser(Request $request){
$validated = $request->validate([
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required|email:rfc,dns',
'password' => ['required','confirmed', Password::min(8)],
'phone_number' => 'required'
]);
$registeredDetails = User::create([
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'email' => $request->email,
'password' => Hash::make($request->password),
'phone_number' => $request->phone_number
]);
}
我的问题是我在哪里发送文档所说的这个事件?
这是我的 UserControler 的顶部
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rules\Password;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Auth\Events\Registered;
这是 env 中的邮件代码
MAIL_MAILER=smtp
MAIL_HOST=kokayazanzibar.com
MAIL_PORT=465
MAIL_USERNAME=demo@kokayazanzibar.com
MAIL_PASSWORD=ienteredmypasswordhere
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=demo@kokayazanzibar.com
MAIL_FROM_NAME="${APP_NAME}"
这是 EventServiceProvider
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
//
}
}
解决方案
在您的应用程序中创建用户后,您将分派它。
在你的情况下:
$validated = $request->validate([
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required|email:rfc,dns',
'password' => ['required','confirmed', Password::min(8)],
'phone_number' => 'required'
]);
$registeredDetails = User::create([
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'email' => $request->email,
'password' => Hash::make($request->password),
'phone_number' => $request->phone_number
]);
event(new Registered($registeredDetails));
推荐阅读
- fitnesse - Fitnesse: is it possible to disable Test and Suite buttons?
- android - Android 发布模式下的 Facebook 登录问题
- c - 指针解引用符号 * 可以称为“多”吗?
- javalite - ActiveWeb:在模板中调用时模型设置器/获取器不起作用
- javascript - 在 React + Redux 中创建输入组件并控制多个表单状态
- database - DB2:涉及多个表的更新查询
- rust - `return 5;` 是 Rust 中的语句或表达式吗?
- python - 如何使用键对 Pandas DataFrame 进行排序?
- mysql - MySQL 从最后 50 行中选择最高的
- rust - 什么是清除和重用 Rust PathBuf 的跨平台方法?