如何在事件侦听器中显示警报消息

时间:2021-07-19 08:52:17

标签: php laravel laravel-5.8 laravel-events

我想在我的监听器上放置一条警告消息:

if ($type == '-'){
    if ($balance < $amo) {
        flash()->overlay('Warning!', 'Amount is higher than Balance.', 'warning');
    } else {
        $wallet->users()->updateExistingPivot($uid, ["balance" => ($balance - $amo)]);
    }
} else {
    $wallet->users()->updateExistingPivot($uid, ["balance" => ($balance + $amo)]);
}

但是这个 flash() 似乎不起作用。我的意思是,它不显示消息 Amount is higher than Balance.

那么如何通过监听器正确打印这条消息?

1 个答案:

答案 0 :(得分:0)

事件应该是主要操作的“副作用”。

因此默认含义是,该事件不应有直接响应。

我认为你应该重新考虑你的代码设计。


无论如何

  1. 您可以通过事件将消息放入会话中来实现。这是强烈不推荐的(至少我不推荐)。但至少,请注意在使用后从会话中删除此消息。

  2. 你在 try/catch 中有你的事件发射器。如果尝试适合,您将闪烁消息。如果它不适合,您将在侦听器中抛出错误并捕获它。在那里你可以闪现另一条消息。同样,我什至不推荐这种解决方案


示例

if($type == '-'){
            if($balance < $amo)
            {
                flash()->overlay('Warning!', 'Amount is higher than Balance.', 'warning');
            }
            else
            {
                $wallet->users()->updateExistingPivot($uid, ["balance" => ($balance - $amo)]);
                throw new \Exception('case1');
            }
        }else{
            $wallet->users()->updateExistingPivot($uid, ["balance" => ($balance + $amo)]);
            throw new \Exception('case2');
        }

然后像这样运行:

try {
    event(new YourEventEmitter($params));
    return view('dashboard')->with('message', 'event is ok');
} catch (\Exception $e) {
    if ($e->message === 'case1')
        return view('dashboard')->with('message', 'event error 1');
    else if ($e->message === 'case2')
        return view('dashboard')->with('message', 'event error 2');
}

**I DO NOT RECOMMEND THIS!!! IT IS NON-SENSE. EVENT SHOULD NOT DO ANYTHING WITH YOUR RESPONSE.**