使用装饰器在Zend_Form中使用唯一ID的ul li列表

时间:2010-10-02 04:49:10

标签: php model-view-controller zend-framework zend-form

我需要使用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装饰者有点混乱......请帮忙...

3 个答案:

答案 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并创建了一个新元素,而不是使用元素装饰器....感谢您的帮助......