我需要使用Zend表单和表单装饰器制作以下html ...
<ul>
<li id="containeruser1">
<label for="user1"><input type="checkbox" class="textbox" value="1" id="user1" name="users[]">User One</label>
</li>
<li id="containeruser2">
<label for="user2"><input type="checkbox" class="textbox" value="2" id="user2" name="users[]">User Two</label>
</li>
<li id="containeruser3">
<label for="user3"><input type="checkbox" class="textbox" value="3" id="user3" name="users[]">User Three</label>
</li>
<li id="containeruser4">
<label for="user4"><input type="checkbox" class="textbox" value="4" id="user4" name="users[]">User Four</label>
</li>
</ul>
我使用的PHP代码是....
$userelement = new Zend_Form_Element_MultiCheckbox ( 'users' );
$userelement-> setRequired(true)
->addDecorator("<li>")
->addMultiOptions ( array ('1' => 'User One', '2' => 'User Two', '3' => 'User Three', '4' => 'User Four' ) )
->setSeparator ( '</li><li>' )->addValidator('NotEmpty', true)
->addErrorMessage('Please select at
least one user');
$userelement->class = 'textbox';
输出并不是我想要的....每个li标签需要有一个唯一的id,所以我可以使用一些js做一些客户端验证和修改......我开始使用Zend_form装饰者有点混乱......请帮忙...
答案 0 :(得分:1)
我为每种元素类型定制了ViewScripts,为我提供了大量的样式和脚本钩子。以下是我的帖子:
答案 1 :(得分:0)
考虑使用JS来定位容器。这样您就不必更换装饰器了 jQuery示例
// example 1
$('#user1').parent().parent().css('color', 'green');
// example 2
$('#user1').parents('li').css('color', 'green');
答案 2 :(得分:0)
我扩展了Zend_Form_Element_MultiCheckbox并创建了一个新元素,而不是使用元素装饰器....感谢您的帮助......