2013-12-14 4 views
1

Я новичок в структуре Yii, и я не могу решить эту проблему с выпадающим списком.Распаковка зависит от раскрывающегося списка нескольких элементов в рамке yii

На моей странице у меня есть два раскрывающихся списка, оба из которых - многоселекторные выпадающие списки. И второе зависит от первого раскрывающегося списка. Например,

1 выпадающее меню - фрукты, овощи, напитки;

2-dropdown зависит от выбора пользователя, если пользователь выбирает фрукты и напитки, он должен быть отображен яблоком, виноградом, соком, bier (все вместе в одном выпадающем списке);

Если пользователь выбирает только один вариант например овощи в первом раскрывающемся списке, второй должен показывать лук, картофель и т.д.

Вот исходный код:

//---------- VIEW ------------ 

    <div id="left"> 
         <div class="btn-group"> 
          <?php    
           echo CHtml::dropDownList('group', '', CHtml::listData($group,'group','group'), array(
            'multiple'=>'multiple', 
            'ajax'=>array(
             'type' => 'POST', 
             'url' => CController::createUrl('site/change'), 
             'update' => '#e5' 
            ), 
            'id' => 'e4', 
            'style' => 'width:300px' 
           )); 
          ?> 
         </div> 
        </div> 
        <div id="right"> 
         <div class="btn-group"> 
          <?php 
           echo CHtml::dropDownList('subgroup','', array(), array(
            'multiple' => 'multiple', 
            'id'=>'e5', 
            'style' => 'width:300px' 
           )); 
          ?> 
         </div> 
        </div> 


// ------------ CONTROLLER ------------ 


public function actionChange() 
     { 

      $groupName = $_POST['group'];   


      $dpCriteria = new CDbCriteria(); 
      $dpCriteria->select = 'subgroups'; 
      $dpCriteria->condition = 'group = '.$groupName; 

      $data = Subgroups::model()->findAll($dpCriteria); 

      $data = CHtml::listData($data,'subgroups','subgroups'); 
      foreach($data as $value=>$name) 
      { 
       echo CHtml::tag('option', 
          array('value'=>$value),CHtml::encode($name),true); 
      } 
     } 

ответ

0

Метод вы спрашиваете это Dependent Dropdown. В структуре YII есть учебники для создания Dependent Dropdown. Проверьте это link для более подробной информации и примеров

EDIT:

В коде, вы проверяете имя_группы с одним значением, как 'group = '.$groupName;. Но $groupname - это массив значений. Таким образом, вы используете in в mysql со значениями вложенного массива $ groupname.

Ваше состояние в критериях:

$ dpCriteria-> состояние = 'группы ('. .implode ("", $ Groupname) ')';

+0

Я видел эту статью, и я мог бы сделать зависимый выпадающий список, но я не мог сделать многопользовательский выбери выпадающий список, я имею в виду первого один мульти выбора, когда вы выбрали 2,3 или 4 варианта, второй должен отображаться в зависимости от первых выборов. Я написал это выше. Спасибо за ответ! –

+0

Обновлен мой ответ в соответствии с вашими комментариями. –

0

Попробуйте как this.In вашего Аякса массива,

'update'=>'#'.CHtml::activeId($model,'attribute_to_update'), 
'data'=>array('atribute'=>'js:this.value'), 
Смежные вопросы