Zend framework 带验证器的zend数组[]元素
您好,我有一个表单,用户可以在其中单击按钮并以友好方式添加新元素(使用Jquery) } 这个表格我不知道怎么做,我用这个,但显然它不起作用Zend framework 带验证器的zend数组[]元素,zend-framework,forms,Zend Framework,Forms,您好,我有一个表单,用户可以在其中单击按钮并以友好方式添加新元素(使用Jquery) } 这个表格我不知道怎么做,我用这个,但显然它不起作用 $sconto = $this->createElement('text','sconto')->setLabel('sconto'); //->setValidators(array(new Gestionale_Validator_Float())); $this->addElement($sconto); ... $scont
$sconto = $this->createElement('text','sconto')->setLabel('sconto');
//->setValidators(array(new Gestionale_Validator_Float()));
$this->addElement($sconto);
...
$sconto->setDecorators(array(//no ViewHelper
'Errors',
'Description',
array(array('data' => 'HtmlTag'), array('tag' => 'td', /*'class' => 'valore_campo', */'id'=>'sconto')),
array('TdLabel', array('placement' => 'prepend', 'class' => 'nome_campo'))
));
如果marcincomment不是您想要做的,那么这是创建多文本元素的另一种方法
public function render($content) {
$element = $this->getElement();
if (!$element instanceof Zend_Form_Element_Text) {
return $content;
}
$view = $element->getView();
if (!$view instanceof Zend_View_Interface) {
return $content;
}
$values = $element->getValue();
$name = $element->getFullyQualifiedName();
$html = '';
if (is_array($values)) {
foreach ($values as $value) {
$html .= $view->formText($name, $value);
}
} else {
$html = $view->formText($name, $values);
}
switch ($this->getPlacement()) {
case self::PREPEND:
return $html . $this->getSeparator() . $content;
case self::APPEND:
default:
return $content . $this->getSeparator() . $html;
}
}
}
$element=new Zend\u Form\u element\u Text('sconto',数组(
“验证程序”=>数组(
新建My_Validate_Test(),
),
“装饰器”=>数组(
“MultiText”,//新装饰程序
“标签”,
“错误”,
“说明”,
数组('HtmlTag',数组('tag'=>'dl',))
),
'label'=>'sconto',
“isArray”=>true//必须为true
));
$this->addElement($element);
希望这对您有所帮助如果Marcin comment不是您想要做的,那么这是创建多文本元素的另一种方法
public function render($content) {
$element = $this->getElement();
if (!$element instanceof Zend_Form_Element_Text) {
return $content;
}
$view = $element->getView();
if (!$view instanceof Zend_View_Interface) {
return $content;
}
$values = $element->getValue();
$name = $element->getFullyQualifiedName();
$html = '';
if (is_array($values)) {
foreach ($values as $value) {
$html .= $view->formText($name, $value);
}
} else {
$html = $view->formText($name, $values);
}
switch ($this->getPlacement()) {
case self::PREPEND:
return $html . $this->getSeparator() . $content;
case self::APPEND:
default:
return $content . $this->getSeparator() . $html;
}
}
}
$element=new Zend\u Form\u element\u Text('sconto',数组(
“验证程序”=>数组(
新建My_Validate_Test(),
),
“装饰器”=>数组(
“MultiText”,//新装饰程序
“标签”,
“错误”,
“说明”,
数组('HtmlTag',数组('tag'=>'dl',))
),
'label'=>'sconto',
“isArray”=>true//必须为true
));
$this->addElement($element);
希望这对您有所帮助您能为表单和验证程序提供代码吗?我认为在ZF中,您无法轻松创建包含多个名为“sconto[]”字段的表单。但是,您可以执行“sconto[0]”、“sconto[1]”等操作。例如,请看一看。我可以执行sconto[0]sconto[1]。。。使用javascript,问题是我不知道用户会输入多少。是的,这就是为什么我更喜欢自己处理表单和$u POST数据的原因。我只是希望Zend_Form能够达到版本2中Zend Framework的其他部分。您能为表单和验证器提供代码吗?我认为在ZF中,您无法轻松创建具有多个名为“sconto[]”字段的表单。但是,您可以执行“sconto[0]”、“sconto[1]”等操作。例如,请看一看。我可以执行sconto[0]sconto[1]。。。使用javascript,问题是我不知道用户会输入多少。是的,这就是为什么我更喜欢自己处理表单和$u POST数据的原因。我只是希望Zend_Form能够达到版本2中Zend Framework的其他部分。我不明白为什么这会适用于任意长度的数组,我觉得验证器只传递了一个值?你不清楚你想要什么。使用Zend_格式的JavaScript创建数组元素或添加新元素很容易。你有其他成员发布的不同答案,我发布了另一个选项。所有答案都将获得相同的结果数组元素。祝你好运我不明白为什么假设这是一个任意长度的数组,我觉得验证器只传递了一个值?你不清楚你想要什么。使用Zend_格式的JavaScript创建数组元素或添加新元素很容易。你有其他成员发布的不同答案,我发布了另一个选项。所有答案都将获得相同的结果数组元素。祝你好运
public function render($content) {
$element = $this->getElement();
if (!$element instanceof Zend_Form_Element_Text) {
return $content;
}
$view = $element->getView();
if (!$view instanceof Zend_View_Interface) {
return $content;
}
$values = $element->getValue();
$name = $element->getFullyQualifiedName();
$html = '';
if (is_array($values)) {
foreach ($values as $value) {
$html .= $view->formText($name, $value);
}
} else {
$html = $view->formText($name, $values);
}
switch ($this->getPlacement()) {
case self::PREPEND:
return $html . $this->getSeparator() . $content;
case self::APPEND:
default:
return $content . $this->getSeparator() . $html;
}
}
public function isValid($value, $context = null) {
if (!is_numeric($value)) {
$this->_error(self::NON_E_NUMERO, $value);
return false;
}
else
return true;
}