【问题标题】:TbActiveForm dropDownListRow in renderPartial on ajax call yiiajax调用yii上的renderPartial中的TbActiveForm dropDownListRow
【发布时间】:2015-10-27 11:02:15
【问题描述】:

我是 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 我需要使用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

【问题讨论】:

    标签: php ajax yii


    【解决方案1】:

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

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

    别忘了结束小部件

    $this->endWidget();
    

    【讨论】:

    • 但是我的第一个下拉列表是由 TbActiveFrom 生成的,所以是否可以在 TbactiveForm 中启动另一个 TbActiveForm?我已经更新了我的问题以包含整个视图文件
    • 你得到这个错误只是因为 $form 不是一个对象,这意味着在当前范围内你还没有将它初始化为 TbActiveForm。
    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多