我已经在Homestead安装了Lumen,我正在尝试实施事件。
..取消注释bootstrap / app.php中的$ app-> withFacades()调用 文件。
要订阅某个活动,您可以使用Event :: listen方法
当我从文档中复制粘贴示例代码时,我得到了下一个错误
Fatal error: Class 'Event' not found in /home/vagrant/project/...
我无法在Lumen文档中找到为什么这不起作用。
在tutorial for Laravel 5上我注意到使用artisan make:event
命令创建的事件有一个像use App\Events\Event;
这样的用法语句
这可能是我需要的缺少的事件类,但是如果那个工匠命令不存在,应该如何在Lumen项目中获得它?
答案 0 :(得分:1)
我不确定您使用的是哪个版本的流明。在Lumen 5.2到5.4中,以下是创建事件的方法。 Lumen 5.4 Events
app / Events / Event.php (这完全是一个可选类,唯一重要的是使用'SerializesModels')
[JsonIgnore]
应用/活动/ ExampleEvent.php 强>
using Newtonsoft.Json;
现在将Event类绑定到
中的Event侦听器应用/提供者/ EventServiceProvider.php 强>
<?php
namespace App\Events;
use Illuminate\Queue\SerializesModels;
abstract class Event
{
use SerializesModels;
}
最后但并非最不重要,不要忘记在
中取消注释/添加以下行<强>自举/ app.php 强>
<?php
namespace App\Events;
class ExampleEvent extends Event
{
/**
* Create a new event instance.
* @return void
*/
public function __construct()
{
//
}
}
答案 1 :(得分:0)
我认为这归结为:
$ APP-&GT; withFacades();
在bootstrap / app.php中不包括事件facade作为类别名。
添加:
class_alias(&#39; Illuminate \ Support \ Facades \ Event&#39;,&#39; Event&#39;);
到Laravel \ Lumen \ Application.php :: withFacades()修复了这个问题,但由于这是一个核心流明文件,因此不推荐使用它。
答案 2 :(得分:0)
可能听起来很傻但是你在顶部指定了use Event;
吗?
取消注释$app->withFacades();
已创建别名,但您仍需要将其导入。
答案 3 :(得分:0)
问题似乎是Laravel中存在的缺少的App\Events\Event;
类,而不是Lumen脚手架中的。{/ p>
缺少的类只是一个抽象的空类:
<?php
namespace App\Events;
abstract class Event
{
//
}
Lumen文档有一个含糊不清的例子,希望他们将来能够纠正这个问题。
<?php
namespace App\Events;
use App\Podcast;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
class PodcastWasPurchased extends Event
{
use SerializesModels;
public $podcast;
/**
* Create a new event instance.
*
* @param Podcast $podcast
* @return void
*/
public function __construct(Podcast $podcast)
{
$this->podcast = $podcast;
}
}