我正在使用Zend Form来创建动态表单.
我也有Zend Form验证.
尝试动态删除验证,但没有取得任何成功.
你能帮我删除Zend Validation吗?
贝娄是我删除验证的代码:
$toRemValArray = array();
$toRemValArray[0] = 'ele_4af42ceac7810';
if(isset($_POST['btnPost_x'])){
if ($form->isValid($_POST)) {
$allElements = $form->getElements();
foreach($allElements as $val){
if(in_array('ele_4af42ceac7810',$toRemValArray)){
$value = $form->getElement($val->getName());
$value->removeValidator('ele_4af42ceac7810');
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
让我知道我的代码是否有任何问题
谢谢穆罕默德·塔雷克
我在Zend表单中面临一个关于电子邮件验证的小问题.
$emailId = new Zend_Form_Element_Text('email');
$emailId->setLabel("Email Adresse")
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator(new Validator_EmailValidator())
->addValidator('NotEmpty')
->addValidator(
'NotEmpty',
TRUE,
array('messages' => array(
'isEmpty' => 'Please enter your email id.'
)
)
);
Run Code Online (Sandbox Code Playgroud)
目前,它将电子邮件错误消息显示为:

我想要的是在所有这些错误的位置设置单个错误消息,如下所示:
"'abcd @ shdsjah'不是有效的电子邮件ID."
由于我是Zend Framework的新手,我对它并不太了解,虽然我尝试了一些代码,但它们没用.
请帮忙.....
提前致谢....
似乎Zend_Validate_Date只是根本无法正常工作.例如:
$validator = new Zend_Validate_Date(array('format' => 'yyyy'));
Run Code Online (Sandbox Code Playgroud)
这是一个简单的验证器,只能接受四位数年份,但$validator->isValid('1/2/3')返回true!真的,Zend?
或者这个怎么样:
$otherValidator = new Zend_Validate_Date(array('format' => 'mm/dd/yyyy'));
Run Code Online (Sandbox Code Playgroud)
即使使用上面的代码,也会$otherValidator->isValid('15/13/10/12/1222')返回true!
我正在使用Zend Framework 1.11.9.它只是我还是一个非常糟糕的验证课程?(更新:换句话说,我的代码是否有问题,或者这是一个应该提交的错误?)
$form = new Zend_Form();
$mockDate = new Zend_Form_Element_Text('mock');
$mockDate->addValidator(???????);
$form->addElements(array($mockDate));
$result = $form->isValid();
if ($result) echo "YES!!!";
else echo "NO!!!";
Run Code Online (Sandbox Code Playgroud)
假设元素采用日期格式.如何确定给定的日期大于或等于今天?
这是我的正则表达式
^(([a-z0-9]+)\.([a-z0-9]+)){4,20}$|^(([a-z0-9]+)\_([a-z0-9]+)){4,20}$
Run Code Online (Sandbox Code Playgroud)
它将是一个带有单个点或单个下划线或没有uderline和dot的单词.我也希望这个表达式在4到20个字符之间(它将是db中的用户名)
这个正则表达式
^(([a-z0-9]+)\.([a-z0-9]+))$
Run Code Online (Sandbox Code Playgroud)
还有这个
^(([a-z0-9]+)\_([a-z0-9]+))$
Run Code Online (Sandbox Code Playgroud)
工作成功,但我不知道如何限制字符串长度
:( 请帮忙
我将使用它与zend框架正则表达式验证器...
我在SO上读到了这个问题:" 如何在zend framework2中禁用inArray验证器表单 "并试图找到它,但找不到任何方法来分离/删除InArrayValidator.但这InArray只是一个验证者.那么如何从表单元素的验证器列表中删除验证器呢?
我可以得到验证器:
$myElement = $form->getInputFilter()->get('city');
$validatorChain = $cityElement->getValidatorChain();
$validators = $validatorChain->getValidators();
Run Code Online (Sandbox Code Playgroud)
然后可能可以使用验证器取消设置数组元素,我想删除,然后将结果数组传递回Input对象和表单元素.但它真的很脏,肯定不是推荐的方式.
那么如何从表单元素中删除验证器呢?
<?php
class Form_Audience extends Zend_Form_SubForm
{
public function init()
{
$this->setMethod('post');
$this->setLegend('Audience Details');
$this->addElement('text', 'audience_total', array(
'label' => 'Audience Total :',
'required' => true,
'filters' => array('Digits'),
'size' => 15,
'validators' => array(
'Digits',
)
));
.... remaining code .....
Run Code Online (Sandbox Code Playgroud)
请帮助修改上述代码以应用 GreaterThan 验证。
谢谢
我有一个用于捕获电子邮件地址的表单元素.我正在使用Zend_Validate_EmailAddress元素,它会生成不是非常用户友好的错误消息.
我的第一步是指定更加用户友好的新消息,但有些检查根本不适合用户友好的消息.然后我尝试isValid()在表单上运行后清除这些消息并指定我自己的消息,但是我找到的所有函数都不会清除消息.
我尝试了什么和结果
setErrorMessages() - 这里设置的值似乎完全被忽略了clearErrorMessages() - 似乎被忽略了setErrors() - 添加我的消息,但保留其他信息这是在我的自定义视图脚本中显示错误的代码:
<?php if ($this->element->hasErrors()): ?>
<?php echo $this->formErrors($this->element->getMessages()); ?>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)
我的解决方案
我授予戈登的答案,因为他的解决方案是最完整的,但是我最终使用addErrorMessage()的元素函数像这样:
$element->addValidator('EmailAddress', false, $this->_validate['EmailAddress'])
->addErrorMessage("'%value%' is not a valid email address");
$element->addValidator('Date', false, array('MM/dd/yyyy'))
->addErrorMessage("Date must be in MM/DD/YYYY format");
Run Code Online (Sandbox Code Playgroud) 我正在尝试向字段添加自定义验证器.它应该考虑另一个领域的价值.例如,字段A最多应为B + 50%.
我已经实现了一个类Zend_Validate_Interface,但显然Zend Form只将当前字段的值发送给验证器.如何让验证器接收所有内容?
我正在使用Zend Framework创建一个表单来捕获用户的人口统计信息.我正在努力验证两个文本字段的数字.
我在../application/forms/UserDemographics.php中构建我的表单,如下所示:
class Application_Form_UserDemographics extends Zend_Form
{
public function init()
{
$this->form = new Zend_Form;
$dbAdapter = Zend_Registry::get("db");
...
$this->fax_number = new Zend_Form_Element_Text('fax_number');
$this->fax_number->setLabel('Fax Number')
->addFilter('Int')
->addFilter('StripTags')
->addValidator('Digits');
$this->mobile_number = new Zend_Form_Element_Text('mobile_number');
$this->mobile_number->setLabel('Mobile Number')
->addFilter('Int')
->addFilter('StripTags')
->addValidator('Digits');
...
}
}
Run Code Online (Sandbox Code Playgroud)
我的数据库当前配置如下关于fax_number和mobile_number字段,以便我可以测试是否接受数字:
+-----------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+----------------+
...
| fax_number | varchar(32) | NO | | NULL |
| mobile_number | int(15) | YES | | NULL |
...
Run Code Online (Sandbox Code Playgroud)
当我在zend表单中的任何一个字段中输入任何数字而不是数字时 …