在我的目录表格中我有FormArena
$this->addElement('radio', 'warrior',array(
'decorators' => array(
'ViewHelper',
),
'disableLoadDefaultDecorators' => true,
'separator' => '',
));
在我的观看页面上,我有
<?php echo $this->forms['formarena']->getItem('warrior'); ?>
在控制器中我有
$getWarriorsList = $this->objArena->getActiveUsers($this->varUserData['id']);
$objFormArena = new FormArena();
if (!empty($getWarriorsList)){
foreach($getWarriorsList AS $varWarriors)
$varOptions[$varWarriors['id_users']] = $varWarriors['nick'];
$objFormArena->warrior->addMultiOptions($varOptions);
unset($varOptions);
}
$this->view->forms = array(
'formarena' => $objFormArena,
);
好的,这很容易。我从base获取数据并添加选项以供控制器查看。但是,当我看到页面上的源代码时,我有:
<div class="radio">
<label for="warrior-27">
<input type="radio" name="warrior" id="warrior-27" value="27">makapaka</label>
<label for="warrior-29">
<input type="radio" name="warrior" id="warrior-29" value="29">Kasia</label>
</div>
但我需要做
<div class="radio">
<input id="warrior-27" type="radio" name="warrior" value="27">
<label for="warrior-27">makapaka</label>
<input id="warrior-29" type="radio" name="warrior" value="29">
<label for="warrior-29">Kasia</label>
</div>
我应该怎么做。我尝试从网上搜索,但我在2天内仍然没有:(
答案 0 :(得分:0)
当前选项不允许以您希望的格式进行渲染。
它只能是
<div class="radio">
<label for="warrior-27">
<input type="radio" name="warrior" id="warrior-27" value="27">makapaka</label>
<label for="warrior-29">
<input type="radio" name="warrior" id="warrior-29" value="29">Kasia</label>
</div>
或
<div class="radio">
<label for="warrior-27">
makapaka
<input type="radio" name="warrior" id="warrior-27" value="27"></label>
<label for="warrior-29">
Kasia
<input type="radio" name="warrior" id="warrior-29" value="29"></label>
</div>
要像您提到的那样呈现表单元素,您需要创建自定义视图助手并将其作为选项传递给ViewHelper
装饰器,或使用ViewScript
装饰器生成自定义输出。
就个人而言,我更喜欢ViewScript
装饰器,因为它易于使用。
使用示例:
$this->addElement('radio', 'warrior',array(
'decorators' => array(
array('ViewScript', array('viewScript' => 'decorator.phtml'))
)
));
并在 decorator.phtml
中<div class="radio">
<?php foreach($this->element->getMultiOptions() as $value => $label): ?>
<input id="<?php echo $this->element->getName() ?>-<?php echo $value ?>" type="radio" name="<?php echo $this->element->getName() ?>" value="<?php echo $value ?>">
<label for="<?php echo $this->element->getName() ?>-<?php echo $value ?>"><?php echo $label ?></label>
<?php endforeach ?>
</div>
NB :此脚本文件可用于所有表单无线电元素
希望有所帮助