2

这是我的代码

    私人 $elementDecorators = 数组(
        '查看助手',
        '错误',
        数组(数组('数据' => 'HtmlTag'),数组('标签' => 'td')),
        数组('标签', 数组('tag' => 'td','class'=>'blue-color','placement'=>'prepend')),
        数组(数组('行' => 'HtmlTag'),数组('标签' => 'tr')),

    );
     公共函数初始化()
     {
      $username = new Zend_Form_Element_Text('username',array(
            '装饰器' =>$this->elementDecorators,
            '标签' =>'用户名',
            '必需' => 真,
            'span' =>array('class'=>'validation','id'=>'unameInfo'),

        ));
    }

       $this->addElements(数组(
                        $用户名
        ));
        $this->setDecorators(数组(
           '表单元素',
            数组('HtmlTag',
                数组('tag'=>'table', 'width' => '100%')
                ),
               '形式'
        ));

为上述代码创建的表单如下

   <tr>
       <td id="username-label"><label for="username" class="blue-color required">Username</label></td>
       <td><input type="text" name="username" id="username" value="" span="Array"></td>
   </tr>

我想关注html

<tr>
           <td id="username-label"><label for="username" class="blue-color required">Username</label></td>
           <td>
               <input type="text" name="username" id="username" value="" span="Array">
               <span class="validation" id="userinfo"></span>
           </td>
</tr>

如何在上面的 zend 表单代码中添加 span 标签?

先感谢您

4

2 回答 2

0

您可以使用AnyMarkup装饰器。

$username  = new Zend_Form_Element_Text('username',array(
     'decorators'    => array(
        'ViewHelper',
         array('AnyMarkup', array('markup' => 'your-markup-here', 'placement' => 'append')),
        'Errors',
        array(array('data' => 'HtmlTag'), array('tag' => 'td')),
        array('Label', array('tag' => 'td','class'=>'blue-color','placement'=>'prepend')),
        array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
     ),
    'label'    => 'Username',
    'required' => true,
    'span'     => array('class'=>'validation','id'=>'unameInfo'), 
    // actually, this last 'span' entry strikes me as odd
));

要使用短格式(如上)将装饰器添加到元素而不是创建实例,您需要使用元素注册装饰器的路径/前缀,例如:

$username->addPrefixPath('My_Decorator_', APPLICATION_PATH . '/../library/My/Decorator', Zend_Form_Element::DECORATOR);

您可以使用以下命令将该前缀/路径添加到所有(当前定​​义的)元素:

$form->addElementPrefixPath($prefix, $path)

方法。

于 2012-12-20T13:06:44.940 回答
0

尝试如下,

...
     $submit = new Zend_Form_Element_Submit('submit', array(
                    'label' => 'Submit Button',
                    'class' => 'form-submit',
                    'decorators' => array(
                        'ViewHelper',
                    ),
                ));

        //$submit->removeDecorator('Label');
        $this->addElement($submit);

        $reset = new Zend_Form_Element_Reset('reset', array(
                    'label' => 'Reset Button',
                    'class' => 'form-reset',
                    'decorators' => array(
                        'ViewHelper',
                    ),
                ));
        //$submit->removeDecorator('Label');
        $this->addElement($reset);

        $this->addDisplayGroup(array('submit', 'reset',), 'submitButtons', array(
            'order' => 10,
            'decorators' => array(
                'FormElements',
                array(
                    array('data' => 'HtmlTag'),
                    array('tag' => 'td','class'=>'move_td')
                ),
                array(
                    array('row' => 'HtmlTag', 'class' => 'element'),
                    array('tag' => 'tr')
                )
            ),
        ));
...

这将生成如下代码,

...
<td class="move_td">

<input type="submit" class="form-submit" value="Submit Button" id="submit" name="submit">

<input type="reset" class="form-reset" value="Reset Button" id="reset" name="reset">
</td>
...

更新

使用下面的代码生成跨度

$this->addElement(
        'hidden',
        'dummy',
        array(
            'required' => false,
            'ignore' => true,
            'autoInsertNotEmptyValidator' => false,
            'decorators' => array(
                array(
                    'HtmlTag', array(
                        'tag'  => 'span',
                        'id'   => 'span-id',
                        'class' => 'span-class'
                    )
                )
            )
        )
    );
    $this->dummy->clearValidators(); 

现在您需要使用 addDisplayGroup 函数对 html 元素进行分组。

于 2012-12-20T12:16:04.323 回答