(几小时后将问题改写为更具描述性)
我需要一些关于理解Propel
setters
/validators
在独立(非框架)开发中的建议。
关于验证的文档指出:
验证器可帮助您在将输入持久保存到数据库之前对其进行验证。
Propel
...并且在验证器消息中,我们可以就用户可以在何处更正未通过验证的条目提供连贯的建议。
a 的示例用法validator
如下:
$user = new User();
$user->setUsername("foo"); // only 3 in length, which is too short...
if ($objUser->validate()) {
...
我发现的问题是“如果你不能setXXX()
验证它怎么办?”
我有一个列类型DATE
,我邀请访问者在 Web 表单中输入日期。他们打错日期并提交03/18/20q2
我希望我的一个自定义验证器能够报告验证器消息并再次将表单返回给要修改的用户,但是这首先发生:
Fatal error: Uncaught exception 'PropelException' with message 'Error parsing date/time value: '03/18/20q2' [wrapped: DateTime::__construct() [<a href='datetime.--construct'>datetime.--construct</a>]: Failed to parse time string (03/18/aaa) at position 5 (/):
CustomValidator
在我的测试中,一旦我写了(例如),我就无法得到任何简单或触发:
$event= new Event();
$event->setDateStart($form_value_for_date); // where values is "03/18/20q2"
我理解为什么会这样——如果你不能依赖它的字段,即使在你保存它之前,创建和尝试操作一个新对象是没有意义的。
这给我的困境是:
如果一个致命错误可能是由于无效条目导致无法Propel validation
为我(以及用户)处理它并发送回有用的消息,我应该打扰Propel validation
我自己的安全/礼貌验证?
我在文档中找不到任何提及如果您提供会发生什么Propel
- 无论出于何种原因 - 它没有为该字段预期的值或如何处理它会发生什么。
我确实希望这是有道理的,并且有人可以向我指出一种方法,这意味着我只需要在一个地方验证输入。