【发布时间】:2021-04-08 17:45:34
【问题描述】:
我有数据库表phones,字段为phone_number。我有一个模型电话。我想以固定格式(已清理)和填充 phone_number(已验证)保存电话
代码中有很多地方需要我或我的同事保存手机。我不相信,他们都会费心检查phone_number 是否已填写且格式正确。而且我不想指望前端JS验证,或数据库NOT NULL检查,...
所以我认为清理和验证 Phone 的最佳位置是模型本身。
如何在 Laravel 8.x 中以最干净的方式做到这一点?
我在互联网上发现了很多类似的问题,但提出的解决方案要么编写大量代码并扭曲框架令人作呕,要么人们根本没有抓住问题。
也许我应该补充一点,我希望这会自动发生。因此,任何尝试以错误格式拨打$phone->save() 或Phone::create() 电话的人最终都会遇到ValidationException
编辑 2:提供者/观察者 - 我找对方向了吗?
编辑 3:事件?所以在我的模型中,我应该这样做:
use Notifiable;
protected $dispatchesEvents = [
'validating' => PhoneSanitize::class,
'saving' => PhoneValidate::class,
];
编辑 4:或者您认为在模型级别验证数据是个坏主意?我读过这篇文章:
Nikola Poša - Self-validating domain model
在我看来这是个好主意。但是如何在 Laravel 中实现这一点呢?
【问题讨论】:
-
您是否尝试过创建表单验证?你可以找到更多关于它here
-
是的,我做到了。但我正在寻找如何在模型中进行验证的方法
标签: laravel validation sanitization laravel-8