php – ZF2表单:自定义元素的顺序

我正在为登录用户创建一个表单以更改其密码,因此我创建了一个现有密码重置表单的子类.除了现有密码的附加字段外,表单将完全相同.它到目前为止工作,除了我无法想出一种方法来手动设置新字段的顺序;我得到它的唯一地方是在表格的最后.似乎ZF2要求您按照想要呈现的顺序添加()表单元素.我会这样做,除了子类窗体的构造函数必须是父窗体的构造函数才能添加新字段,此时父窗体已经添加了它的字段.

我已经尝试设置我的新字段的属性顺序,但它不起作用;我尝试了几种不同的组合(经过大量搜索后,我无法在任何地方找到此功能的文档).

子类构造函数代码段:

class ChangePassword extends ResetPassword implements InputFilterProviderInterface {

public function __construct() {
    parent::__construct();

    $this->add(array(
        'type' => 'Zend\Form\Element\Password',
        'name' => 'existingPassword',
        'order' => 0,
        'options' => array(
            'label' => 'Existing Password',
            'order' => 0,
        ),
        'attributes' => array(
            'required' => 'required',
            'order' => 0,
        )
    ));
}

父构造函数代码段:

class ResetPassword extends Form implements InputFilterProviderInterface {

    public function __construct() {
        parent::__construct('reset-password');

        $this->add(array(
            'type' => 'Zend\Form\Element\Password',
            'name' => 'password',
            ...

解决方法:

您正在寻找影响元素顺序的键被命名为priority.

表单add()方法接受包含$flags的第二个数组,并且在此数组中必须添加优先级键/值对.

你的构造函数应该最终看起来像这样……

class ChangePassword extends ResetPassword implements InputFilterProviderInterface {

    public function __construct() {
        parent::__construct();

        $this->add(array(
            'type' => 'Zend\Form\Element\Password',
            'name' => 'existingPassword',
            'options' => array(
                'label' => 'Existing Password',
            ),
            'attributes' => array(
                'required' => 'required',
            )
        ), // add flags array containing priority key/value 
        array(
            'priority' => 1000, // Increase value to move to top of form
        ));
    }
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...