And*_*rew 5 zend-framework zend-form nested-checkboxes
我想创建一个Zend_Form嵌套的复选框.我确信这是可能的,但我不记得该怎么做了.这就是它的样子:
[x] Top level checkbox 1
[ ] Sub level 1
[x] Sub level 2
[ ] Top level 2
[ ] Sub level 1
[ ] Sub level 2
Run Code Online (Sandbox Code Playgroud)
我将如何实现这一结果?
您可以使用 ViewScript Decorator 来执行此操作
一个例子
class MyForm extends Zend_Form
{
public function init()
{
$this->addElement('checkbox', 'elementName', array(
'multiOptions' => array(
'level1' => array(
'Level 1 Option 1',
'Level 1 Option 2',
),
'level2' => array(
'Level 2 Option 1',
'Level 2 Option 2',
),
),
'label' => 'Element Label',
'decorators' => array(
array('ViewScript', array(
'viewScript' => '_element.phtml',
'class' => 'form element')
)
)
));
}
}
Run Code Online (Sandbox Code Playgroud)
在视图脚本目录中创建 _element.phtml。
<div class="<?php echo $this->class ?>">
<?php echo $this->formLabel($this->element->getName(),
$this->element->getLabel()) ?>
<?php $options = $this->element->getAttribs(); ?>
<?php if(isset($options['multiOptions']) && is_array($options['multiOptions'])): ?>
<ul>
<?php foreach($options['multiOptions'] as $level => $levelOptions): ?>
<li>
<span><?php echo $level; ?></span>
<?php if(is_array($levelOptions)): ?>
<ul>
<?php foreach($levelOptions as $key => $value): ?>
<li>
<?php echo $this->{$this->element->helper}(
$this->element->getName() . '[' . $key . ']',
$this->element->getValue(),
$options['options']
) ?><label><?php echo $value; ?></label>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php echo $this->formErrors($this->element->getMessages()) ?>
<div class="hint"><?php echo $this->element->getDescription() ?></div>
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1379 次 |
| 最近记录: |