Laravel 4.1.* 在服务提供者中注册事件的问题

标签 laravel laravel-4

我正在尝试向服务提供商注册事件,但我不断收到反射类错误。我查了也没找到解决办法,可能是核心的问题。

// AppServiceProvider.php

<?php namespace App;

use Illuminate\Support\ServiceProvider;
use App\Events\UserEventHandler;

class AppServiceProvider extends ServiceProvider {

    public function register() {

        // Events
        $this->app->events->subscribe(new UserEventHandler);

    }

}

// UserEventHandler.php

<?php namespace App\Events;

class UserEventHandler {

/**
 * Handle user login events.
 */
public function onUserLogin($event)
{
    echo 'subscriber logged in'; exit;
}

/**
 * Register the listeners for the subscriber.
 *
 * @param  Illuminate\Events\Dispatcher  $events
 * @return array
 */
public function subscribe($events)
{
    $events->listen('auth.login', 'UserEventHandler@onUserLogin');
}

}

$this->app->events->subscribe(new UserEventHandler); 触发正常,因为我可以到达 subscribe 方法,但是 $events->listen('auth .login', 'UserEventHandler@onUserLogin'); 返回异常 UserEventHandler 类不存在

我在global.php上尝试了相同的代码并且工作正常,所以问题出在ServiceProvider上,我尝试了register()和boot()这两种方法并得到了相同的错误。

[已更新]

我发现在监听事件时需要专门指定完整的命名空间。

public function subscribe($events)
{
    $events->listen('auth.login', 'App\Events\UserEventHandler@onUserLogin');
}

最佳答案

如果类与服务提供者位于不同的目录中,则需要声明该类的完整路径。

关于Laravel 4.1.* 在服务提供者中注册事件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22623742/

相关文章:

php - 如何根据 "where"条件使用外键自动完成显示另一个表中的数据

php - net::ERR_CONNECTION_REFUSED 与 Nginx 和 Laravel 5

javascript - 未找到 PHP Laravel @include javascript 变量

php - 在 PHP 5.3.3 上使用 Laravel 4 会遇到什么问题?

php - 多对多(belongsToMany)Laravel 关系在 HHVM 下似乎不起作用

jquery - 如何解决 Laravel 中的 AJAX 搜索?

Laravel 检查属性存在

php - 没有在 Eloquent 模型中设置表

php - Laravel将可变成功消息从存储库传递回 Controller

laravel - 为 Mail::send() 方法定义电子邮件地址