在ajax调用yii时,renderPartial中的TbActiveForm dropDownListRow


TbActiveForm dropDownListRow in renderPartial on ajax call yii

我是Yii的新手。我正在尝试使用ajax生成Dependent下拉字段我有一个视图文件名swap.php,其中包含以下代码

<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm',array(
    'id'=>'projects-form',
    'type'=>'horizontal',
    'enableAjaxValidation'=>false,
    'enableClientValidation'=>true,
    'htmlOptions'=>array(
        'enctype'=>"multipart/form-data"
    )
)); ?>
<?php echo $form->dropDownListRow($model, 'salesperson', $data,array('labelOptions'=>array('label'=>'Select Sales Person'),'empty'=>array(''=>'Choose Sales Person'), 'class'=>'span3','maxlength'=>5,
'ajax'=>array(
    'type'=>'POST',
    'url'=>$this->createUrl('getUsers'),
    'update'=>'#SalesPersonsAssignLog_users'
)
)); 
?>
<div id="SalesPersonsAssignLog_users">
</div>
<?php $this->endWidget(); ?>

在相应的控制器中,我有以下功能

public function actionGetUsers()
    {
        $result         =   $_POST['SalesPersonsAssignLog'];
        $salesPersonId  =   $result['salesperson'];         
        $model              =   new UsersSalesPersons;
        $result             =   $model->getAssignedCompanies($salesPersonId);
        $resultArray        =   array();
        foreach($result as $value)
        {
            $id     =   $value->company->user_id;
            $name   =   $value->company->user_company;
            $resultArray[$id]   =   $name;          
        }
        $this->renderPartial('_ajaxUsers',array('data'=>$resultArray,'model'=>$model));     
    }

__ajaxUsers.php I需要使用TbActive form、创建dropdownListRow

<?php echo $form->dropDownListRow($model, 'users', $data,array('labelOptions'=>array('label'=>'Sales Person'),'empty'=>array(''=>'Choose Sales Person'), 'class'=>'span3','maxlength'=>5)); ?>

收到致命错误调用非对象上的成员函数dropDownListRow()由于该页面中没有TbActiveForm,那么我如何在ajax上创建一个dropdownListRow调用

您必须将$form初始化为TbActiveForm小部件,并为其提供TbActiveForm文件的路径

 $form = $this->beginWidget( 'ext.bootstrap.widgets.TbActiveForm', array(
        'id'                    => 'test-form'
 ) );

不要忘记结束小部件

$this->endWidget();