繁体   English   中英

Yii Dependent-下拉代码不起作用

[英]Yii Dependent-dropdown code not working

我正在尝试使用需要依赖下拉列表的Yii框架来设置新应用程序,以便当用户选择jobSkillArea时,使用内置的jQuery方法加载下一个下拉列表jobSkillSpecialty的选项。 我已经从在这里和Yii论坛上找到的内容复制并修改了代码,但是即使在Chrome的javascript控制台中,我也一无所获。 谁能看看这个,看看我哪里出了问题? 谢谢。

这是我认为的两个下拉列表的代码:

<div class="row">
    <?php echo $form->labelEx($model,'jobSkillArea'); ?>
    <?php 
        $list = array();
        $list = CHtml::listData(validJobSkillAreas::model()->findAll(), 'JobSkillArea', 'JobSkillArea');
        echo $form->dropDownList($model, 'jobSkillArea', $list, 
            array('prompt'=>'--Select Skill Area--'),
            array(
                'ajax'=>array(
                    'type'=>'POST',
                    'data'=>array('jobSkillArea'=>'js:this.value'),
                    'url'=>CController::createUrl('NewConsFormController/getSkillSpecialty'),
                    'update'=>'#'.CHtml::activeId($model,'jobSkillSpecialty')
                )
            )
        );
    ?>
    <?php echo $form->error($model,'jobSkillArea'); ?>
</div>
<div class="row">
    <?php echo $form->labelEx($model,'jobSkillSpecialty'); ?>
    <?php
        $list = array();
        $list = CHtml::listData(validJobSkillSpecialties::model()->findAll(),'jobSkillSpecialty','jobSkillSpecialty');
        echo $form->dropDownList($model, 'jobSkillSpecialty', array(), array('prompt'=>'--Select Skill Specialty--'));
    ?>
    <?php echo $form->error($model,'jobSkillSpecialty'); ?>
</div>

然后,下面是控制器中第一个下拉菜单调用的代码。 第一个发现是获取将父级与子级链接的ID,因为我没有将KeyValue存储在最终产品中。 其余部分来自论坛。

public function actionGetSkillSpecialty() {
    $areaID = ValidJobSkillAreas::model()->find('JobSkillArea=:SkillArea',
        array(':SkillArea'=>'$_POST[$jobSkillArea]'));
    $data=ValidJobSkillSpecialties::model()->findAll('SkillAreaId=:SkillAreaId', 
            array(':SkillAreaId'=>$areaID->ID));

    $list=array();
    $list=CHtml::listData($data,'jobSkillSpecialty','jobSkillSpecialty');

    echo "<option value=''>--Select Skill Specialty--</option>";
    foreach($list as $value=>$jobSkillSpecialty)  {
        echo CHtml::tag('option',
           array('value'=>$value),CHtml::encode($jobSkillSpecialty),true);
    }
}

该视图是_form视图中的部分渲染,因为这是我可以使手风琴小部件与我拥有的字段一起工作的唯一方法。 这是调用包含两个下拉选择框的jobDetails部分的手风琴代码。

<div id="accordion">
    <?php
    $this->widget('zii.widgets.jui.CJuiAccordion', array(
        'panels'=>array(
            'Job Details'=>$this->renderPartial('_partial_jobdetails',array('model'=>$model,'this'=>$this,'form'=>$form),true,false),
            'Consultant Details'=>$this->renderPartial('_partial_consdetails',array('model'=>$model,'this'=>$this,'form'=>$form),true,false),
            'Client Details'=>$this->renderPartial('_partial_clientdetails',array('model'=>$model,'this'=>$this,'form'=>$form),true,false),
            'Internal Info'=>$this->renderPartial('_partial_internaldetails',array('model'=>$model,'this'=>$this,'form'=>$form),true,false),
            'Form Requirements'=>$this->renderPartial('_partial_formsdetails',array('model'=>$model,'this'=>$this,'form'=>$form),true,false),
            'JPMC Details'=>$this->renderPartial('_partial_jpmcdetails',array('model'=>$model,'this'=>$this,'form'=>$form),true,false),
        ),
        // additional javascript options for the accordion plugin
        'options'=>array(
            'collapsible'=>true,
            'active'=>false,
            'autoHeight'=>false,
            'heightStyle'=>'content',
        ),
        'htmlOptions'=>array(
            // HTML options you may need
        ),
    ));
    ?>
</div>

请尝试以下代码

视图

<?php                                   
  echo CHtml::dropDownList('region_id','', 
  CHtml::listData($courses, 'course_id', 'course_name'),
  array(
    'prompt'=>'Select Region',
    'ajax' => array(
    'type'=>'POST', 
    'url'=>CController::createUrl('loadcities'),
    'update'=>'#city_name', 
  'data'=>array('region'=>'js:this.value'),
  ))); 
 echo CHtml::dropDownList('city_name','', array(), array('prompt'=>'Select City'),
);
?>

==================================================

控制器功能

public function actionLoadcities()
{
   $data=City::model()->findAll('course='.$_POST['region'], 
   array(':region'=>(int) $_POST['region']));
    $data=CHtml::listData($data,'city_id','city_name');
    echo "<option value=''>Select City</option>";
   foreach($data as $value=>$city_name)
   echo CHtml::tag('option', array('value'=>$value),CHtml::encode($city_name),true);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM