【问题标题】:Three columns table Form in Zend FrameworkZend Framework中的三列表格表格
【发布时间】:2011-11-20 04:11:40
【问题描述】:

我在 Zend Framework 中创建“三列表”表单时遇到了一些问题:

我已经有了由两列表格装饰的 Zend Form:

表格有两列,第一列用于标签,第二列用于 Zend_Form_Element,效果很好,但是, 我想添加第三列并放在那里小图像 - 问号,我将在其中设置 javascript。

如何设置装饰?

两列表格的当前装饰是:

<?php
class Application_Form_Login extends Zend_Form {

public function init() {

    // create decoration for form's elements
    $elementDecoration = array(
        'ViewHelper',
        'Description',
        'Errors',
        array(array('data'=>'HtmlTag'), array('tag' => 'td', 'valign' => 'TOP')),
        array('Label', array('tag' => 'td')),
        array('Errors'),
        array(array('row'=>'HtmlTag'),array('tag'=>'tr'))
    );
    $buttonDecoration = array(
        'ViewHelper',
        array(array('data'  => 'HtmlTag'), array('tag' => 'td')),
        array(array('label' => 'HtmlTag'), array('tag' => 'td', 'placement' => 'prepend')),
        array(array('row'   => 'HtmlTag'), array('tag' => 'tr')),
    );
    $formDecoration = array(
        'FormElements',
        array(array('data'=>'HtmlTag'), array('tag'=>'table', 'class'=>'forms')),
        'Form'
    );

    // create form elements
    $username = new Zend_Form_Element_Text("username");
    $username->setLabel('Username: ')
             ->setDecorators($elementDecoration);

    $password = new Zend_Form_Element_Password("password");
    $password->setLabel('Password: ')
             ->setDecorators($elementDecoration);

    $submit = new Zend_Form_Element_Submit('Login');
    $submit->setLabel('LOGIN')
           ->setDecorators($buttonDecoration);

    $this->setDecorators($formDecoration);

    // set created form elements
    $this->setAction('')
        ->setMethod('post')
        ->addElement($username)
        ->addElement($password)
        ->addElement($submit);
    }

   }

【问题讨论】:

  • 你没有验证也没有投票给答案...

标签: zend-framework zend-form zend-decorators


【解决方案1】:

这取决于您是否只需要添加&lt;td class="fieldTip"&gt;&lt;/td&gt;,或者您是否需要在&lt;td&gt;&lt;/td&gt;中添加内容。

在第一种情况下,您只需在 Label 装饰器之后添加一个简单的 HtmlTag 装饰器:

array('HtmlTag', array('tag'=>'td','class'=>'fieldTip','placement'=> 'APPEND'))

如果你想对字段进行某种描述,你应该使用 Description 装饰器和 $element->setDescription() 方法,然后执行一些 css/js,以将其显示为工具提示。

编辑

我刚刚回答了另一个关于简单自定义装饰器的问题,你会在我给出的示例中找到你需要的东西 Zend Form Element with Javascript - Decorator, View Helper or View Script?。只需将 &lt;script&gt; 部分替换为您需要的任何内容即可。

【讨论】:

  • 我需要将一些内容放入 标记中,并且我已经在 Zend_Form_Element 下方进行了描述,我需要类似另一个描述的内容....无论如何,我将使用您的示例和通过 JavaScript 在 标签中设置内容
  • 就是这样!谢谢,当我获得 15 名声望时,我会为答案投票:)
  • 我想你现在已经名声在外了 ;)
猜你喜欢
相关资源
最近更新 更多
热门标签