代码之家  ›  专栏  ›  技术社区  ›  sasori

带Yii的从属下拉框

  •  1
  • sasori  · 技术社区  · 14 年前

    我有一个国家,州,城市的表格,我需要3个下拉菜单 其中,如果我选择像美国这样的国家,则“州”下拉菜单将自动仅显示属于美国的州,然后,如果我选择像加利福尼亚这样的州,则“城市”下拉菜单将只显示属于加利福尼亚的城市

    目前在yii实现这个有问题。我有这个表格文件 其中应包括这3个下拉列表。我有一部分代码,但我不知道如何解决这个问题

    这是控制器发来的

    public function actionDynamicstates()
    {
      $sql = "SELECT StateName FROM gg_t_worldareasstates ".
             "WHERE CountryID = :countryid";
      $command = Yii::app()->createCommand($sql);
      $command->bindValue(':countryid', $_POST['CountryID'], PDO::PARAM_INT);
      $data = $command->execute();
    
      $data = CHtml::listData($data,'StateID','StateName');
      foreach($data as $value=>$name)
      {
        echo CHtml::tag('option',
        array('value'=>$value),CHtml::encode($name),true);
      }
    }
    

    这是从表单视图文件

    <div class="row">
    <?php 
    $country = new CDbCriteria; 
    $country->order = 'CountryName ASC';
    echo $form->dropDownList($model, 'CountryID', 
      CHtml::listData
      (
        Worldareascountries::model()->findAll($country),
        'CountryID',
        array
        (
          'ajax' => array
          (
            'type' => 'POST',
            'url' => CController::createUrl('wsmembersdetails/dynamicstates'),
            'update' => '#StateID',
          )
        )
      )
    );
    echo $form->dropDownList('StateID','', array());
    ?>
    </div>
    

    我把上面的密码改成了这个

        <div class="row">
        <?php echo $form->labelEx($model,'Country'); ?>
        <?php 
              $country = new CDbCriteria; 
              $country->order = 'CountryName ASC';
        ?>
        <?php 
              echo $form->dropDownList($model,'CountryID',CHtml::listData(Worldareascountries::model()->findAll($country),'CountryID','CountryName'),
                        array(
                            'ajax' => array(
                            'type' => 'POST',
                            'url' => CController::createUrl('wsmembersdetails/dynamicstates'),
                            'update' => "#StateID"
                        )       
                  )
              );
        ?>
        <?php echo $form->error($model,'CountryID'); ?>
    </div>
    
    <div class="row">
        <?php echo $form->labelEx($model,'State'); ?>
        <?php 
              $state = new CDbCriteria;
              $state->order = 'StateName ASC';
        ?>
        <?php 
              echo $form->dropDownList($model,'StateID',CHtml::listData(Worldareasstates::model()->findAll($state),'StateID','StateName'),
                        array(
                            'ajax' => array(
                            'type' => 'POST',
                            'url' => CController::createUrl('wsmembersdetails/dynamiccities'),
                            'update' => '#CityID'
                        )   
                    )
              );
        ?>
        <?php echo $form->error($model,'StateID'); ?>
    </div>
    
    
    <div class="row">
    
        <?php echo $form->labelEx($model,'CityID'); ?>
         <?php echo $form->dropDownList($model,'CityID','',array());?>
        <?php echo $form->error($model,'CityID'); ?>
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Suriyan Suresh    14 年前

    更改此行
    $data=$命令->执行();

    $data=$命令->查询();

        2
  •  -2
  •   sasori    14 年前

    这个问题解决了,在yiwiki文档上