2013-04-09 51 views
1

我需要每個元素後面帶有工具提示的radioButtonList。如何添加另一個元素到Yii 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 [?] 

可能,模板像 '模板' =>'{input} {label}'可以幫助我嗎?

回答

1

這對當前的實現是不可能的。您必須遍歷列表數據並使用CHtml::radioButton()CHtml::activeRadioButton()手動創建按鈕。

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); 
相關問題