Zend_Form 数组表示法和空元素名称

发布于 2024-08-09 09:29:57 字数 765 浏览 10 评论 0原文

我想渲染:

<input type="text" value="" name="foo[]" />
<input type="text" value="" name="bar[]" />

但是 Zend_Form_Element 需要一个(字符串)名称,所以我需要这样做:

$this->addElement('text', '1', array(
    'belongsTo' => 'foo'
));

$this->addElement('text', '2', array(
    'belongsTo' => 'bar'
));

但是输出是:

<input id="foo-1" type="text" value="" name="foo[1]" />
<input id="bar-2"  type="text" value="" name="bar[2]" />

我也可以接受类似的输出:

<input id="foo-1" type="text" value="" name="foo[1]" />
<input id="bar-1"  type="text" value="" name="bar[1]" />

但是 Zend_Form_Element 重写具有相同名称的元素

有没有办法做我想做的事情需要?

I'want to render:

<input type="text" value="" name="foo[]" />
<input type="text" value="" name="bar[]" />

but Zend_Form_Element require a (string) name, so I need to do:

$this->addElement('text', '1', array(
    'belongsTo' => 'foo'
));

$this->addElement('text', '2', array(
    'belongsTo' => 'bar'
));

but the output is:

<input id="foo-1" type="text" value="" name="foo[1]" />
<input id="bar-2"  type="text" value="" name="bar[2]" />

I can also accept an output like:

<input id="foo-1" type="text" value="" name="foo[1]" />
<input id="bar-1"  type="text" value="" name="bar[1]" />

but Zend_Form_Element rewrite elements with the same name

is there a way to do what I need?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南街女流氓 2024-08-16 09:29:57

对于多个值:

$foo = new Zend_Form_Element_Text('foo');
// Other parameters
$foo->setIsArray(TRUE);
$this->addElement($foo);

生成: name="foo[]"

--

如果您正在查找给定的键,例如 name="foo[bar]",请使用:

$bar= new Zend_Form_Element_Text('bar');
// Other parameters
$bar->setBelongsTo('foo');
$this->addElement($bar);

--

在 ZF 1.11.5 上测试

For multiple values:

$foo = new Zend_Form_Element_Text('foo');
// Other parameters
$foo->setIsArray(TRUE);
$this->addElement($foo);

Generates: name="foo[]"

--

If you're looking for given keys such as name="foo[bar]", use:

$bar= new Zend_Form_Element_Text('bar');
// Other parameters
$bar->setBelongsTo('foo');
$this->addElement($bar);

--

Tested on ZF 1.11.5

眼波传意 2024-08-16 09:29:57

类 MyFooForm 扩展 Zend_Form {
公共函数 init() {
$fullNameOpts = 数组(
'必需'=>假,
'标签'=>'全名',
'isArray'=>true,
'验证者' =>数组( 数组('stringLength', false, 数组(1, 250) ) )
);
$this->addElement('text' ,'fullName',$fullNameOpts);
// 其余的元素、形式和内容都放在这里
}

确实创建了

<dd id="fullName-element"><input type="text" class="inputAccesible" value="" id="fullName"name="fullName[]"></dd>

It's on Element.php ,在 Form 中,第 512 行“isArray”检查。
我正在使用常规的 zend_form、带有自定义验证器的 crossValidation,并且我正在推送子表单来复制主表单,因为用户可以多次添加相同的表单。
另外,我懒于研究自定义装饰器,我已经创建了一个,但它杀死了子表单和数组表示法,所以我只坚持使用常规装饰器,这解决了它。

我现在是Zf 1.10。

class MyFooForm extends Zend_Form {
public function init() {
$fullNameOpts = array(
'required'=>false,
'label'=>'fullName',
'isArray'=>true,
'validators' => array( array('stringLength', false, array(1, 250) ) )
);
$this->addElement('text' ,'fullName',$fullNameOpts);
// rest of the elements , forms and stuff goes here
}
}

And that does creates

<dd id="fullName-element"><input type="text" class="inputAccesible" value="" id="fullName"name="fullName[]"></dd>

It's on Element.php , in Form , line 512 "isArray" check.
I'm using a regular zend_form, crossValidation with custom validators and i'm pushing subforms to replicate the main form, 'cause the user can add multiple times the same form.
Additionally , I'm too lazy to research custom decorators, i have created one, but it kills subForms and array notation, so i just stick with the regular ones, and that solves it.

I'm at Zf 1.10.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文