代码之家  ›  专栏  ›  技术社区  ›  Alex Pliutau

Zend格式。添加a href并在div中放置一些元素

  •  0
  • Alex Pliutau  · 技术社区  · 14 年前

    我有一些zend表格。这是我的准则:

    private function _createForm($action) {
    
        $form = new Zend_Form();
    
        $form->setName($action . '_form');
        $form->setMethod('post');
    
        // Main tab
        $title = $form->createElement('text', 'title');
        $title->setLabel('Title')
              ->setAttrib('maxlength',50)->setAttrib('id', 'title')->setAttrib('class', $action . '_title')
              ->setAttrib('style','height: 15px; width: 200px;')
              ->setRequired(true)
              ->setDecorators(array(
                'ViewHelper',
                array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class'  => 'element')),
                array('Label', array('tag' => 'td')),
                array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
              ));
    
        $description = $form->createElement('textarea', 'description');
        $description->setLabel('Description')
                    ->setAttrib('style','height: 50px; width: 200px;')->setAttrib('id', 'description')->setAttrib('class', $action . '_description')
                    ->setDecorators(array(
                      'ViewHelper',
                      array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class'  => 'element')),
                      array('Label', array('tag' => 'td')),
                      array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
                    ));
        // Advanced tab
        $qualif_time = $form->createElement('text', 'qualif_time');
        $qualif_time->setLabel('Qualification Time')
            ->setAttrib('maxlength',11)->setAttrib('id', 'qualif_time')->setAttrib('class', $action . '_qualif_time')->setAttrib('style','height: 15px; width: 200px;')
            ->setDecorators(array(
              'ViewHelper',
              array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class'  => 'element')),
              array('Label', array('tag' => 'td')),
              array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
            ));
        $total_assoc_down = $form->createElement('text', 'total_assoc_down');
        $total_assoc_down->setLabel('Total Associates Downline')
            ->setAttrib('maxlength',11)->setAttrib('id', 'total_assoc_down')->setAttrib('class', $action . '_total_assoc_down')->setAttrib('style','height: 15px; width: 200px;')
            ->setDecorators(array(
              'ViewHelper',
              array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class'  => 'element')),
              array('Label', array('tag' => 'td')),
              array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
            ));
    
        $submit = $form->createElement('submit', $action);
        $submit->setAttrib('id', 'submit')->setAttrib('value', $action)
               ->setDecorators(array(
                 'ViewHelper',
                 array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class'  => 'element')),
                 array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
               ));
    
        $form->addElements(array(
            $title, $description, $qualif_time, $total_assoc_down
        ));
    
        $form->addDisplayGroup(array('qualif_time', 'total_assoc_down'), 'advanced_tab');
        $advanced_tab = $form->getDisplayGroup('advanced_tab');
        $form->addElements(array($advanced_tab, $submit));
    
        $form->setDecorators(array(
            'FormElements',
            array('HtmlTag', array('tag' => 'table')),
            'Form',
        ));
        return $form;
    }
    

    我的任务是将$title和description放在一个div中,并将$total_assoc和$qualif_time放在另一个div中,我应该在这些div之前插入href(link)。我试图用addDisplayGroup()来完成,但它创建了一个字段集。我需要迪夫。

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Robert    12 年前

    尝试使用窗体装饰器。 *

    $decoratorFile = "path to decoration phtml for example user/" path starts automatic from views/scripts
    
    $paramsArr = array('viewScript' => $decoratorFile);
    $decorator = new Zend_Form_Decorator_ViewScript($paramsArr);
    
    $this->setDecorators(array($decorator));  // $this is a your form object
    

    <form class="formU" enctype="application/x-www-form-urlencoded"
        action="<?= $this->element->getAction() ?>"
        method="<?= $this->element->getMethod() ?>"
        name="<?= $this->element->getName() ?>"
        id="<?= $this->element->getId() ?>">
    
        <?php 
        // all field in foreach
        $formElements = $this->element->getElements();
        foreach ($formElements as $formElement) {
            echo $formElement;
        }
    
        // or you can use something like this for each field
    
        $this->element->getElement('elementName')
    
        ?>
    </form>
    

    如果这对你来说还不够。您必须为每个字段使用退色卡:

    http://framework.zend.com/manual/en/zend.form.decorators.html

    田间装饰工的工作原理类似。