私は次のZend_Form_Elementを持っています:
$imginstructions = "Some description";
$img = $this->createElement('select','img');
$img->setAttrib('class', 'image-select');
$imgdecorator = $img->getDecorator('Description');
$imgdecorator->setOption('escape', false);
$img->setLabel('Image:')
->setRequired(true)
->addMultiOptions($images)
->setValue('')
->setDescription($imginstructions)
->addErrorMessage('You must select an image');
$img->size = 5;
$this->addElement($img);
説明は、選択ボックスの横に表示されます。問題は次のとおりです。エラーがスローされると、レンダリングされたhtmlが変更されるため、説明が選択ボックスの横ではなく下に表示されます。
エラーがスローされる前にレンダリングされたHTML:
<dd id="img-element">
<select size="5" class="image-select" id="img" name="img" style="display: none;">
...........options..............
</select>
<p class="description">Some Description</p></dd>
エラーがスローされた後にレンダリングされるHTML:
<dd id="img-element">
<select size="5" class="image-select" id="img" name="img" style="display: none;">
...........options..............
</select>
<ul class="errors"><li>You must select an image</li></ul>
<p class="description">Some Description</p></dd>
dd要素のDOMツリーの最後の要素としてエラーメッセージを強制的に追加する方法はありますか?
何かのようなもの:
<dd id="img-element">
<select size="5" class="image-select" id="img" name="img" style="display: none;">
...........options..............
</select>
<p class="description">Some Description</p>
<ul class="errors"><li>You must select an image</li></ul></dd>
したがって、「ul」はddDOMツリーの最後にあります。
よろしくお願いいたします。この質問への回答に時間を割いていただきありがとうございます。