【问题标题】:where do addElement method defined zend 2?addElement 方法在哪里定义了zend 2?
【发布时间】:2014-08-31 08:21:26
【问题描述】:
$form = new Zend_Form();
$form->addElement('text', 'fname', array('belongsTo' => 'user'));

我需要知道 addElement 方法在哪里定义?我搜索了 \vendor\ZF2\library\Zend([\Form]) 目录,但找不到这个方法!。如果没有这样的方法,那么请帮助我理解上面两行是如何工作的,以及这个方法的其他数组配置和参数是什么。

编辑:感谢 Crisp。实际上我正在尝试在 zf2 中创建一个输入数组,例如

<input name="val[one]" type="text" />
<input name="val[two]" type="text" />
<input name="val[three]" type="text" />

或者至少……像这样

<input name="val[0]" type="text" />
<input name="val[1]" type="text" />
<input name="val[2]" type="text" />

我找到了一个上面代码的例子,它不能像 zf1 一样工作。

【问题讨论】:

标签: zend-framework2


【解决方案1】:

在 ZF2 中,程序化表单创建已从 ZF1 更改。不再有 addElement 函数,而是使用 $form->add($element);

添加元素

在 ZF2 中创建表单的基本步骤是:

  1. 创建表单元素
  2. 创建表单
  3. 向表单添加元素

创建表单元素:

use Zend\Form\Element;
use Zend\Form\Form;

$name = new Element('name');
$name->setLabel('Your name');
$name->setAttributes(array(
    'type'  => 'text'
));

$send = new Element('send');
$send->setValue('Submit');
$send->setAttributes(array(
    'type'  => 'submit'
));

创建表单:

$form = new Form('contact');

向表单添加元素:

$form->add($name);
$form->add($send);

但是在 ZF2 中,另一种方法是使用工厂从数组配置中生成表单:

use Zend\Form\Factory;

$factory = new Factory();

$form    = $factory->createForm(array(
    'hydrator' => 'Zend\Stdlib\Hydrator\ArraySerializable',
    'elements' => array(
        array(
            'spec' => array(
                'name' => 'name',
                'options' => array(
                    'label' => 'Your name',
                ),
                'type'  => 'Text',
            )
        ),
        array(
            'spec' => array(
                'name' => 'send',
                'type'  => 'Submit',
                'attributes' => array(
                    'value' => 'Submit',
                ),
            ),
        ),
    ),
));

然后从视图中引用表单并使用表单视图助手呈现。

参考资料:

http://framework.zend.com/manual/2.3/en/modules/zend.form.quick-start.html https://zf2.readthedocs.org/en/develop/modules/zend.form.advanced-use-of-forms.html http://akrabat.com/category/zend-framework-2/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2020-04-19
    • 2013-07-18
    • 1970-01-01
    相关资源
    最近更新 更多