Zend framework Zend框架-要使用哪些装饰器?

Zend framework Zend框架-要使用哪些装饰器?,zend-framework,zend-form,Zend Framework,Zend Form,我想更改html标记。我想更改标记的,并将标签和元素包装在标记中,以便对它们应用浮动。 此时,我的元素输出如下所示: <fieldset id="fieldset-languages"> <legend>Languages</legend> <dl> <dt id="lang1-label"> <label for="lang1" class="optional">L

我想更改html标记。我想更改
标记的
,并将标签和元素包装在
标记中,以便对它们应用浮动。 此时,我的元素输出如下所示:

<fieldset id="fieldset-languages">
    <legend>Languages</legend>
    <dl>

        <dt id="lang1-label">
            <label for="lang1" class="optional">Language</label>
        </dt>
        <dd id="lang1-element">
            <select name="lang1" id="lang1" class="input-select">
                <option value="0" label="English">English</option>
                <option value="1" label="French">French</option>
            </select>
        </dd>

        <dt id="lang2-label">
            <label for="lang1" class="optional">Language</label>
        </dt>
        <dd id="lang2-element">
            <select name="lang2" id="lang2" class="input-select">
                <option value="0" label="German">German</option>
                <option value="1" label="Spanish">Spanish</option>
            </select>
        </dd>

    </dl>
</fieldset>

语言文字
语言
英语
法语
语言
德国的
西班牙的
我想把它改成这个

<fieldset id="fieldset-languages">
    <legend>Languages</legend>
    <div>
        <div>
            <p id="lang1-label">
                <label for="lang1" class="optional">Language</label>
            </p>
            <p id="lang1-element">
                <select name="lang1" id="lang1" class="input-select">
                    <option value="0" label="English">English</option>
                    <option value="1" label="French">French</option>
                </select>
            </p>
        </div>

        <div>
            <p id="lang2-label">
                <label for="lang1" class="optional">Language</label>
            </p>
            <p id="lang2-element">
                <select name="lang2" id="lang2" class="input-select">
                    <option value="0" label="German">German</option>
                    <option value="1" label="Spanish">Spanish</option>
                </select>
            </p>
        </div>

    </div>
</fieldset>

语言文字

语言

英语 法语

语言

德国的 西班牙的


我已经发现我可以使用Html装饰器将dt/dd更改为
标记,但不能将标签和元素包装在一个div中。

您的装饰器应该是这样的(只是一个示例):

您可以阅读中的“使用标准装饰器自定义输出”部分 至少,了解表单装饰器的工作原理对我很有帮助

引自文章:

添加装饰器时,您可以选择将其别名。什么 这允许您使用不同的名称存储装饰器 --它允许您以该名称从堆栈中检索它 当您需要添加两个或多个相同类型时,它主要很有用 实际上,在这种情况下,如果您不使用别名 该类型的最后注册装饰器将覆盖所有其他装饰器 实例!通过将数组作为 decorator类型,具有单个键/值对,别名为 键,装饰器类型作为值 要在堆栈中使用两个不同的HTML标记,您可以做一些事情 像下面这样……”


(继续阅读本节的这一部分;-)

您的装饰师应该是这样的(只是一个示例):

您可以阅读中的“使用标准装饰器自定义输出”部分 至少,了解表单装饰器的工作原理对我很有帮助

引自文章:

添加装饰器时,您可以选择将其别名。什么 这允许您使用不同的名称存储装饰器 --它允许您以该名称从堆栈中检索它 当您需要添加两个或多个相同类型时,它主要很有用 实际上,在这种情况下,如果您不使用别名 该类型的最后注册装饰器将覆盖所有其他装饰器 实例!通过将数组作为 decorator类型,具有单个键/值对,别名为 键,装饰器类型作为值 要在堆栈中使用两个不同的HTML标记,您可以做一些事情 像下面这样……”

(继续阅读本节的这一部分;-))

      $this->setDecorators(array(
         'ViewHelper',
          array('Description', array('tag' => 'p', 'class' => 'description')),
          'Errors',
          array('HtmlTag', array('tag' => 'div')),
          array('Label', array('tag' => 'p')),
          array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')),
      ));