php - 当用户注册时,我在 Laravel 5.1 中的哪里添加事件

标签 php events laravel authentication laravel-5

我在 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\EventsApp\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/

相关文章:

javascript - 在 Google map 上使用 KML 叠加层进行用户输入搜索

javascript - 如何在捕获阶段触发自定义事件

c++ - Boost Circular Buffer,如何让它在填充时调用一些函数?

javascript - 事件不适用于使用 Snap.svg 制作的 SVG

laravel - 页面浏览计数器在Laravel 5

php - 检测更改的字段并通过 jquery 和 ajax 发送

php - 用户按下注销并销毁 session 后,如何禁用后退浏览器按钮?

php - Google Play 商店将数据发送到 Web 服务器

php - Laravel/PHP - 并行运行 3 个 php 函数

Laravel 项目的所有 Assets 都出现 404 错误