多个Zend 1 From单行元素

时间:2015-04-10 11:46:27

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

我试图将两个文本类型输入放在一行中,并带有一个标签,并将它们包装在代表一行的div中。从某种意义上说,我想从:

<div class="formRow">
    <label> date to</label>
    <input type="text" name="date" class="dateTimeInput">
</div>

为:

<div class="formRow">
    <label> date to</label>
    <input type="text" name="date" class="dateInput">
    <input type="text" name="time" class="timeInput">
</div>

problem description 但我不知道如何实现这一点,因为其他元素已经在显示组中:

    $customDecorator = array(
        'ViewHelper',
        'Label',
        'Errors',
        array('HtmlTag', array('tag' => 'div', 'class' => 'dialogRow'))
    );

    // date to
    $dateFrom = $this->createElement('text', 'dateFrom', array(
        'label'         => 'date from',
        'decorators'    => $customDecorator,
    ));
    // date to
    $dateTo = $this->createElement('text', 'dateTo', array(
        'label'         => 'date to',
        'decorators'    => $customDecorator,
    ));

    // add first fieldset for shift info
    $this->addDisplayGroup(
        array('dateFrom', 'dateTo'),
        'info',
        array('legend' => 'info')
    );

任何建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

使用openOnlycloseOnly选项使用开始/结束html标记而不是包装器来解决这个问题:

    $compositeOpenDecorator = array(
        'ViewHelper',
        'Errors',
        'Label',
        array('HtmlTag', array(
            'tag' => 'div',
            'class' => 'someClass',
            'openOnly' => true,
        )
    ));

    $compositeCloseDecorator = array(
        'ViewHelper',
        'Errors',
        'Label',
        array('HtmlTag', array(
            'tag' => 'div',
            'closeOnly' => true,
        )
    ));