我正在使用Twitter Bootstrap 3.单选按钮的Html代码应如下所示:
<div class="radio">
<label>
<input type="radio" name="search_text_source" value="title" />
In the title
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="search_text_source" value="content" />
In the content
</label>
</div>
...
在表单中,我按如下方式创建单选按钮:
$this->add(array(
'name' => 'search_text_source',
'type' => 'radio',
'options' => array(
'value_options' => array(
'title' => 'In the title',
'content' => 'In the content',
'description' => 'In the description',
),
),
));
如何在视图脚本中单独显示每个单选按钮?
P.S。:或任何决定,它将使用表格创建类似HTML代码。
编辑:
感谢Sam想通了。但是我会将这些变体留给更复杂的情况。在实验过程中,发生了以下情况(使用标准视图助手):
// in view script:
<?
$this->formRadio()->setSeparator('</div><div class="radio">');
?>
<!-- some html -->
<div class="radio">
<?php echo $this->formRadio($form->get('search_text_source')) ?>
</div>
再次感谢Sam的帮助,没有他,我不明白。
答案 0 :(得分:4)
有没有人读过the documentation?甚至还有一个专门的章节Zend\Form\View\Helper - 课程,应该回答你的所有问题。
此外,由于您可能想要所有表单元素的TB3样式,您可能对one of the many, many TB-Modules
感兴趣//编辑
我没有看到文档没有回答你的问题:SI认为formRadio()
viewHelper的默认输出是你正在寻找的,所以你需要的只是一个单独的div,对吗?
// any.phtml
<?=$this->form()->openTag($form);?>
<div class="radio">
<?=$this->formRadio($form->get('radio1')); ?>
</div>
<?=$this->form()->closeTag();?>
// Edit2
当然,您总是可以选择编写自己的formRadio()
ViewHelper,为您写出div
。有一个easy to find SO Question, just for this very topic可用。
// Edit3
对于态度感到内疚,你的ViewHelper可能就像这样简单:
// Application\Form\View\Helper\FormRadio.php
namespace Application\Form\View\Helper;
use Zend\Form\View\Helper\FormRadio as OriginalFormRadio;
class FormRadio extends OriginalFormRadio
{
protected function renderOptions(/* include original attributes here */)
{
// Include 100% of Original FormMultiCheckbox Code
// https://github.com/zendframework/zf2/blob/master/library/Zend/Form/View/Helper/FormMultiCheckbox.php#L147
// Now change this one line #227 into your code
// Instead of: https://github.com/zendframework/zf2/blob/master/library/Zend/Form/View/Helper/FormMultiCheckbox.php#L227
$template = '<div class="radio">' . $labelOpen . '%s%s' . $labelClose . '</div>';
}
}
然后你必须覆盖默认的ViewHelper
// Inside Module Class
public function getViewHelperConfig()
{
return array(
'invokables' => array(
'formradio' => 'Application\Form\View\Helper\FormRadio'
)
);
}
附加信息:在此示例中,我覆盖原始formRadio,而不是formMultiCheckbox。这是因为我想TB3会有一个不同的CSS类来渲染Checkbox而不是Radio元素。
答案 1 :(得分:1)
我的解决方案是:
<强>形式:强>
$this->add(array(
'type' => 'radio',
'name' => 'gender',
'options' => array(
'label' => 'Gender',
'value_options' => array(
'female' => array(
'value' => '1',
),
'male' => array(
'value' => '2',
),
),
),));
查看:强>
<div class="form-group">
<?php
$form->get('gender')->setLabelAttributes(array('class' => 'col-sm-4'));
echo $this->formLabel($form->get('gender'));
?>
<div class="col-lg-8">
<?php
$element = $form->get('gender');
$options = $element->getOptions();
$options = $options['value_options'];
?>
<div class="rdio rdio-primary">
<input id="female" type="radio" <?php if ($element->getValue() == $options['female']['value']) echo 'checked="checked"' ?> name="<?php echo $element->getName() ?>" value="<?php echo $options['female']['value'] ?>">
<label for="female">Female</label>
</div>
<div class="rdio rdio-primary">
<input id="male" type="radio" <?php if ($element->getValue() == $options['male']['value']) echo 'checked="checked"' ?> name="<?php echo $element->getName() ?>" value="<?php echo $options['male']['value'] ?>">
<label for="male">Male</label>
</div>
</div>
有关详细信息,您可以学习以下代码: ZF2 rendering individual radio elements with helpers