Laravel Nova–从观察者类手动发送错误警报



我有一个季节资源模型,其中有一个名为active.的字段

要求是禁用具有活动状态的season的删除。

我为季节模型创建了一个观察者来观察删除事件的情况。通过这个函数,我可以在active为true的情况下阻止删除。

但问题在于错误信息;有什么方法可以从Observer类向会话flash添加错误消息吗?

<?php
public function deleting(Season $season)
{
if($season->active_season)
{
Log::info('Sorry, this season can`t be deleted. 
There must be at least one active season.');
}
return false;
}

这还没有经过测试,但我在以前的项目中做到了这一点:

use IlluminateValidationValidationException;
class AbcObserver
{
public function creating(Abc $abc)
{
if ($abc->details != 'test') {
throw ValidationException::withMessages(['details' => 'This is not valid.']);
}
}
}

您可以使用Exception类。我在Nova操作中测试了它,它抛出了toast错误通知。

use Exception;
throw new Exception('Error message here ...');
// Or
throw_if(
$validator->fails(), // or any true boolean
Exception::class,
'Error message here ...'
);

我不知道如何闪烁错误消息。

但由于要求是在活动状态的季节禁用删除,我建议使用不符合条件时不会显示删除图标的策略。

class SeasonPolicy {
...
public function delete(User $user, Season $season) {
if($season->active_season) {
return false;
}
return true;
}
}

并在CCD_ 5中注册该策略。

注意:

未定义的策略方法

如果策略存在但缺少用于特定动作的方法,用户将不被允许执行该动作。所以,如果你有定义了一个策略,不要忘记定义所有相关的授权方法。

最新更新