2016-12-26 5 views
2

я следующий код в мой контроллер:Как развивать зависимая выпадающий без базы данных

public function getData($property) 
    { 
     $data = array(
      'type'=>array(
       'PC', 
      'Laptop' 
      ), 
      'brand'=>array(
       '1'=>array( 
        'ASUS PC', 
        'DELL PC', 
      ), 
      '2'=>array( 
        'ASUS laptop', 
        'DELL laptop', 
      ), 

     ); 
     return $data[$property]; 
    } 

На мой взгляд:.

<?= $form->dropDownList($model, 'type',$model->getData('type'), array('class' => 'form-control')) ?> 

Этот код (в представлении) возвращает типы (например, показывает, ПК и ноутбука в раскрывающемся списке).

Мне нужно разработать зависимое падение, которое отобразит «ASUS PC» и «DELL PC» в раскрывающемся списке, если пользователь выберет опцию pc из первой выпадающей (тип). Как мне это сделать.

ответ

0

1) добавьте две раскрывающиеся поля на странице просмотра.

<?php echo $form->dropDownList($model, 'type',array('PC'=>'PC','Laptop'=>'Laptops'), 
array(
    'empty'=>'--Select Product Type---' , 
    'ajax' => array(
    'type'=>'POST', //request type 
    'url'=>CController::createUrl('yourcontroller/getData'), //url to call. 
    'data'=>array('type'=>'js:this.value'),// value to send 
    'update'=>'#dependent_value', //selector to update 

))); ?> 

//empty since it will be filled by the other dropdown 
<div class="row"> 
     <?php echo CHtml::dropDownList('dependent_value','', array()); ?> 


    </div> 

Контроллер

public function actionGetData() { 
     $data = array('type' => array('PC', 'Laptop'), 'brand' => array('1' => array('ASUS PC', 'DELL PC'), '2' => array('ASUS laptop', 'DELL laptop'))); 
     //echo "<pre>";print_r($_POST['type']);die; 
     if ($_POST['type'] == 'PC') { 

      $arr = $data['brand'][1]; 
     } elseif ($_POST['type'] == 'Laptop') { 

      $arr = $data['brand'][2]; 
     } else { 
      $arr = array(); 
     } 
     echo CHtml::tag('option', array('value' => $value), CHtml::encode("Select Product Brand--"), true); 
     foreach ($arr as $value => $name) { 
      echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true); 
     } 
    } 

Примечание: Убедитесь в том, чтобы установить разрешение на доступ к этой акции в accessRules