[英]Running Javascript in Laravel 5.7 event listener
我正在嘗試在用戶登錄時運行一個 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
您可以將通知代碼放在通用(例如布局)模板中,因此如果用戶會話中有消息,它將在任何地方觸發通知
您嘗試執行的操作似乎不可能,因為偵聽器不會呈現任何 HTML 頁面(代碼將在何處執行),而只會執行一些 PHP 代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.