问题标签 [laravel-events]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
7194 浏览

laravel - Laravel Broadcast - 组合多个中间件(web、auth:api)

我正在使用 Laravel Event Broadcast 和 Pusher 在我的 API 和 Web 上使用 websocket。如果我单独尝试它们,两者都可以正常工作。我的意思是:

但是,如果我想像这样同时使用两者:

...它对两者都崩溃了,我怀疑它假设我正在尝试为这两个auth:api && web中间件启用。

有没有办法为此使用 OR 类型的语句 ( auth::api || 'web')?如果我想同时使用两者并且如果它通过一个中间件,它会绕过中间件。

请注意,我将 Laravel Passport 用于我的 api。


或者有没有一种方法可以为两者组合并创建一个混合中间件(本质上将检查 api 或 web)?所以我可以使用这样的东西:


更新:

据我了解,如果我创建一个名为 的新中间件broadcast,我可以这样做:

但是那我该如何改变/broadcasting/auth路线呢?如果我试试这个:

这将返回用户对象信息,但是,它应该返回如下内容:auth:"374f7ff42b7da877aa35:c29addedec281b418331a61dc3cfc74da8b108222565fa4924a8..."

0 投票
3 回答
1779 浏览

php - Laravel Mailable 队列,如何将自定义数据传递给 MessageSent 事件

我正在使用 Laravel Mailable 发送电子邮件,并且我想记录已成功发送的电子邮件。

Laravel Mailable 具有在发送电子邮件后触发的默认事件

https://laravel.com/docs/5.6/mail#events

所以我把我的听众钩到这个事件上

侦听器处理程序

额外数据 job_request_id 从 Mailable 类 CustomEmailNotification.php 中的 build() 方法传递

现在,Listener 类上的这一行在没有队列的情况下工作正常,但是当使用队列时,它将返回 null

问题是,使用队列时将自定义数据传递给 MailSent 事件的正确方法是什么?

还是在使用队列并传递给 withSwiftMessage() 时可能会丢失 job_request_id,因此事件侦听器刚刚收到空值?

谢谢

0 投票
1 回答
1206 浏览

laravel - Laravel 事件未在控制器中触发

我在 Laravel 中创建了交通预订系统。当客户预订新的运输旅行时,我使用事件 (CalculateCustomerBookingolCharges) 计算佣金金额。

我尝试预订新行程,所有数据都已保存,但未计算佣金金额(未触发事件)。

这是我的控制器代码:

}

事件监听器:

0 投票
1 回答
831 浏览

laravel - Laravel Job 无法识别对象属性

我正在将请求传递给工作类,以发送电子邮件以获取联系表。问题是我无法直接访问该属性。

我将构造函数中的 $request 设置为$this->request = $request;

handle()方法中,我这样做:

\Log::info('job-contact-request', ['request' => $this->request]);

日志吐出:

[2018-06-30 14:07:34] local.INFO: request {"request":"[object] (App\Events\ContactRequestValidated: {\"request\":{\"client_name\":\"Daniel \",\"client_email\":\"email@email.com\",\"client_phone\":\"1234567891\",\"client_text\":\"blargle carble darble zarble\"},\"socket \“:无效的})”}

这表明 client_email 已设置。但是当我尝试访问时$this->request->client_email,我得到:

[2018-06-30 14:15:30] local.ERROR: 未定义属性:App\Events\ContactRequestValidated::$client_email {"exception":"[object] (ErrorException(code: 0): Undefined property: App\ Events\ContactRequestValidated::$client_email at /var/www/site/laravel/app/Jobs/SendContactRequestEmail.php:36) [stacktrace]

0 投票
1 回答
250 浏览

laravel - Laravel 5.6 一个事件和许多可选的侦听器

在 Laravel 5.6 中

我有一个名为DocumentSend,

而且我有很多听众喜欢(SendEmail,,,)SendNotificationSendSMS

监听器是可选的(取决于文档类型并由用户定义),现在的问题是:

我如何仅使用侦听器或所有侦听器调用例如DocumentSend事件?SendSMSDocumentSend

我希望你明白我的意思,并告诉我解决我的问题的最佳做法。

提前致谢

0 投票
1 回答
717 浏览

laravel - 如何使用 socket.io 从客户端发送数据到 laravel

我正在尝试使用 socket.io。并想从我的 javascript(客户端)发送一个变量到 laravel 事件,然后将其传递回客户端。我在我的代码中评论了我想要的。

下面是我的代码:

事件:

客户端JS:

0 投票
0 回答
157 浏览

php - Laravel - 从长 api 调用更新客户端

我有一个很长的 PHP 事件脚本(约 1 分钟长),它从前端被触发。在我的脚本中,我目前只是回显到运行服务器的控制台,但我也想将这些回显转发到客户端。这些回显只是为了显示当前进程/步骤脚本,以便用户可以看到进度,而不仅仅是空等待。

我的一些想法是将 laravel-echo 与 Pusher 一起使用,或者使用 Laravel Session 存储这些 echo 消息,然后在前端每 5 秒左右轮询一次。

我不想依赖像 Pusher 这样的第三方服务(从长远来看),第二个选项似乎效率低下且硬编码。

有什么建议或方法吗?

0 投票
0 回答
1654 浏览

laravel - 从 laravel 中的事件刷新视图

我需要等待(监听)来自客户端通过 API 路由的请求,这将向我发送一些文本,当收到请求时,我需要向客户端确认并将文本发送到刀片视图而不是返回客户端的 api .

我不认为我可以在控制器逻辑中做所有事情。

所以我开始深入研究事件/侦听器并写下这个:

然后

并从 api 路由文件中调用此测试路由:

那就是在控制器上寻找这个功能:

忘记 $txt 是如何制作的,只是一个测试。

如何强制我的网络应用程序中的页面反映此事件对我来说不是那么清楚!我应该走这条路还是远离解决方案?我很确定我不能从“句柄”功能返回到视图......最好的问候

0 投票
2 回答
5251 浏览

php - 即使事件被触发,Laravel 监听器也不会被触发

我正在使用 Laravel 框架开发一个 Web 应用程序。我正在尝试在我的应用程序中使用事件和侦听器。但是该事件已被触发,并且未触发触发事件的侦听器。

这是我的控制器动作

这是我的 Events\ItemCreated.php

然后我有那个事件的监听器。

听众/电子邮件订阅用户.php

在 EventServiceProvider 中,我像这样注册了事件和侦听器

事件被触发。但是听众没有被解雇。为什么?怎么了?

我尝试了以下解决方案。

0 投票
0 回答
1227 浏览

laravel - 广播事件时,Laravel 函数“事件”不起作用

我有以下代码:

/routes/web.php

我在哪里使用该功能:event(...).

我还有以下Event文件:

/app/Events/UserSignedUp.php

然后,我在一个Node.js文件上监听事件:

/socket.js

我的问题是,在上面的文件中:/routes/web.php我使用:

事件没有到达Node.js监听器。但是,该事件正确到达,Redis因为我可以使用:$ redis-cli monitor命令看到它。

[编辑 1]以下event(...)是调用该函数时得到的结果:

另一方面,当我使用:

事件正确地到达Node.js侦听器。

[编辑 2]以下Redis::publish(...)是调用该函数时得到的结果:

关于为什么事件没有到达Node.js侦听器事件但首先到达Redis服务器的任何想法?

谢谢。