0

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

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.

那么如何通过 Listener 正确打印此消息?

4

1 回答 1

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.**
于 2021-07-19T09:03:52.693 回答