我需要在每个元素之后使用工具提示的radioButtonList。
我使用此代码:
<?php echo $form->radioButtonList($model, 'Field', CHtml::listData(FieldDataModel::model()->findAll(), 'id', 'name')); ?>
并获得以下结果:
[x] ParamName0
[ ] ParamName1
[ ] ParamName2
我怎样才能得到这样的结果:
[x] ParamName0 [?]-(Link, that shows description. Description is taking from FieldDataModel)
[ ] ParamName1 [?]
[ ] ParamName2 [?]
可能是'template'=&gt;等模板'{input} {label}'可以帮助我?
答案 0 :(得分:1)
目前的实施无法做到这一点。您必须循环显示列表数据,并使用CHtml::radioButton()
或CHtml::activeRadioButton()
手动创建按钮。
答案 1 :(得分:0)
作为替代解决方案,您仍然可以使用CActiveForm
并动态创建包含描述的必需链接。例如,它可能如下所示:
<?php
$listModels = FieldDataModel::model()->findAll();
$form = $this->beginWidget('CActiveForm');
?>
<div>
<?php
echo $form->radioButtonList($model, 'Field', CHtml::listData($listModels, 'id', 'name'));
?>
</div>
<?php
$this->endWidget();
$descriptions = array();
foreach ($listModels as $listModel)
$descriptions['id-' . $listModel->id] = $listModel->description;
$modelClassName = get_class($model);
Yii::app()->clientScript->registerScript("customRadioButtonListInit", "
var descriptions = " . CJavaScript::encode($descriptions) . ";
jQuery('#" . $modelClassName . "_Field input[type=\"radio\"]').each(function() {
var valueAttr = jQuery(this).attr('value');
var jqLabel = jQuery(this).next('label');
var jqTooltipLink = jQuery('<a></a>')
.text('?')
.attr('title', descriptions['id-' + valueAttr])
.click(function(event) {
event.preventDefault();
event.stopPropagation();
// TODO: implement your tooltip here...
alert(jQuery(this).attr('title'));
});
jqLabel.after(jqTooltipLink).after(' ');
})
", CClientScript::POS_READY);