javascript - 在 Laravel 5.7 事件监听器中运行 Javascript
问题描述
我正在尝试在用户登录时运行一个 JavaScript 库 Noty。我已经注册了该活动并按照此处的文档进行操作。但是,我尝试使用 echo 发送 javascript,但代码没有从我所看到的执行。工作流程是,在Home
页面登录后,将弹出一个通知通知,表示欢迎。
这是我的EventServiceProvider
:
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
'Illuminate\Auth\Events\Login' => ['App\Listeners\UserEventListener@onUserLogin']
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
parent::boot();
}
}
UserEventListener
:
class UserEventListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param Login $event
* @return void
*/
public function handle(Login $event)
{
}
public function onUserLogin($event) {
echo("<script>
$(document).ready(function() {
new Noty({
text: 'Welcome {{Auth::user()->name}}! ',
type:'info',
layout: 'centerRight',
timeout:2000
})
.on('onShow', function() {
var audio = new Audio('/sounds/appointed.mp3');
audio.play();
}).show();
});
</script>");
echo("adad");
}
}
解决方案
使用 Laravel 显示消息似乎是一种非常奇怪的方法。
你可以简单地在你的登录控制器中使用这一行
return redirect('your/path')->with('success', 'your message here');
在刀片模板的某处执行简单检查时:
@if (\Session::has('success'))
<script>
$(document).ready(function() {
new Noty({
text: 'Welcome {{ Auth::user()->name }}',
type:'info',
layout: 'centerRight',
timeout:2000
})
.on('onShow', function() {
var audio = new Audio('/sounds/appointed.mp3');
audio.play();
}).show();
});
</script>
@endif
您可以将通知代码放在通用(例如布局)模板中,因此如果用户会话中有消息,它将在任何地方触发通知
推荐阅读
- c# - 如何将值插入到列包含特殊字符的表中?
- java - 在 IText 7 中添加新字体
- python - 如何在熊猫数据框中创建密集排名时跳过列的空值?
- xml - 如何使用多个元素值列表在 golang 中解析 xml。并将它们存储在列表中
- mongodb - 慢计数文件
- swift - 提案:SE-0185 是如何在幕后实施的?
- javascript - 使用电子生成器构建后,电子应用程序未加载 index.html,甚至没有给出错误
- python-3.x - 代码在 PyCharm 中运行,来自终端的 ModuleNotFoundError
- ios - 如何在 ios 调整中解决 FCAlertView 的问题
- python-3.x - 多种方式解析数据框