我想更改html标记。我想更改<dl>
标记的<div>
并将标签和元素一起包装在<div>
标记中,以便我可以向其应用浮点数。
目前我的元素输出如下所示:
<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更改为<p>
标签 - 但不能将标签和元素包装在div中。
答案 0 :(得分:1)
你的装饰者应该是这样的(只是一个例子):
$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')),
));
您可以阅读this article的“使用标准装饰器自定义输出”部分 至少,了解表单装饰器的工作方式对我有帮助
引用文章:
“添加装饰器时,您可以选择别名。什么 这样做是允许您使用不同的名称存储装饰器 - 允许您通过该名称从堆栈中检索它。这个 当您需要添加两个或更多相同类型时,它非常有用 装饰者;事实上,在这种情况下,如果你不做别名的话 该类型的最后一个注册装饰将覆盖所有其他 实例!您通过传递数组来完成别名 装饰器类型,具有单个键/值对,别名为 key,以及装饰器类型作为值。例如,如果您需要 要在堆栈中使用两个不同的HTML标记,您可以执行某些操作 如下......“
(继续阅读本节的这一部分; - ))