我正在YYYY-MM-DD使用格式验证用户输入的日期字符串Zend_Validate::is($value,'Date').
此调用创建此层次结构:
Zend_Validate::is()
Zend_Validate_Date->isValid()
Zend_Date::isDate()
Zend_Locale_Format::getDate()
Zend_Locale_Format::_parseDate()
Run Code Online (Sandbox Code Playgroud)
最后,它失败了这个例外:
Zend_Locale_Exception: Unable to parse date '2009-09-08' using 'MMM d, y' (M <> y) in /usr/share/php/Zend/Locale/Format.php on line 1001
Run Code Online (Sandbox Code Playgroud)
我使用en_US作为我的应用程序区域设置.如何配置Zend_Validate以接受此日期格式?例如,是否可以更改日期的区域设置格式?
我为电子邮件设置了验证器,因此它不能为空.
这是zend_form生成的常用形式的标记:
<dt id="email-label"><label class="required" for="email">Email</label></dt>
<dd id="email-element">
<input type="text" value="" id="email" name="email">
</dd>
Run Code Online (Sandbox Code Playgroud)
验证失败时,zend_form ul class="errors"在dd中添加一个新内容
<dt id="email-label"><label class="required" for="email">Email</label></dt>
<dd id="email-element">
<input type="text" value="" id="email" name="email">
<ul class="errors">
<li>Value is required and can't be empty</li>
</ul>
</dd>
Run Code Online (Sandbox Code Playgroud)
如何稍微更改此默认行为,以便整个dt dd包装在单个p或something我可以添加错误类?我的猜测是我需要指定zend_form在元素出错时如何表现.
我正在对电话号码使用 Zend 表单验证。我想,用户应该输入以下格式的电话号码:
“+91-151-1234567”、“01234567891”、“+912345678901”
所以我使用这个正则表达式:
"^(?:\+?([0-9]{3})\)?[-. ]?\(?([0-9]{3})\)?[-. ]?([0-9]{10})[-. ]$"
Run Code Online (Sandbox Code Playgroud)
但它不起作用。它正在生成错误:
致命错误:未捕获的异常 'Zend_Validate_Exception' 带有消息 '内部错误匹配模式 '^(?:+?([0-9]{3}))?[-. ]?(?([0-9]{3}))?[-. ]?([0-9]{10})[-. ]$' 对 /var/www/html/allindiazend/library/Zend/Validate/Regex.php:117 中的值 '+91-151-3297154'' 堆栈跟踪:#0 /var/www/html/allindiazend/library /Zend/Validate.php(98): Zend_Validate_Regex->isValid('+91-151-3297154')
1 /var/www/html/allindiazend/library/Zend/Validate.php(98):
Zend_Validate->isValid('+91-151-3297154')
2 /var/www/html/allindiazend/library/Zend/Filter/Input.php(932):
Zend_Validate->isValid('+91-151-3297154')
3 /var/www/html/allindiazend/library/Zend/Filter/Input.php(800):
Zend_Filter_Input->_validateRule(Array)
4 /var/www/html/allindiazend/library/Zend/Filter/Input.php(688):
Zend_Filter_Input->_validate() #5 /var/www/html/allindiazend/library/Zend/Filter/Input.php(430): Zend_Filter_Input->_process() #6 /var/www/html/allindiazend/application/controllers /StaticController.php(148): Zend_Filter_Input->isValid() #7 /var/www/html/allindi 在 /var/www/html/allindiazend/library/Zend/Validate/Regex.php 中的第 117 行
任何人都可以帮我做这个。
先感谢您。
我再次遇到一个我似乎无法理解的问题.我有一个这样的表单元素:
$this->add(array(
'type' => 'datetime',
'name' => 'modifiedTime',
'options' => array(
'label' => 'Modified Time',
),
'attributes' => array(
'disabled' => 'disable',
),
));
Run Code Online (Sandbox Code Playgroud)
通过我的实体(我正在使用学说),这个确实被正确填充:
/**
* @ORM\Column(type="datetime", nullable=true, name="modified_time")
*
* @Form\Exclude()
*/
protected $modifiedTime;
public function getModifiedTime(){
return $this->modifiedTime;
}
public function populate($data)
{
$this->modifiedTime = date_create($data['modifiedTime']);
}
Run Code Online (Sandbox Code Playgroud)
只要未设置"禁用"属性,此工作就完全正常.但是一旦我得到验证错误声称"值是必需的并且不能为空"事件,则在输入中设置值.
有任何想法吗?
我在http://framework.zend.com/manual/en/zend.validate.writing_validators.html上看到了语法
案例 - %value%意味着什么?
protected $_messageTemplates = array(
self::FLOAT => "'%value%' is not a floating point value"
);
Run Code Online (Sandbox Code Playgroud)
谢谢