2015-03-19 2 views
0

Я как бы новичок, когда дело доходит до программирования, но я работаю над тем, чтобы стать лучше. Сказав это, я пойду к делу. Я разрабатываю приложение среднего размера, один из модулей заботится о регистрации новых пользователей. Форма включает в себя местоположение пользователя, которое делится на 3: Страны (Paises), Провинции (Provincias) и Locations (Localidades), как вы, возможно, уже догадались, страна содержит много провинций и провинцию во многих местах в значительной степени как эта статья, я использовал в качестве руководства от Yii Framework's Wiki. Несмотря на все мои попытки, я не мог сделать свою работу, Провинции Dropdownlist никогда не заполняются, и я даже не могу попробовать найти места без провинций.Создание зависимого выпадающего списка на Yii с использованием AJAX

Вот код из обзора:

<div class="row"> 
    //This is the part that handes the Countries, it loads all the countries properly on the dropdownlist. 
    <?php echo CHtml::label('Pais','paises_id',array ('required'=>true));?> 
    <?php 
     $pmodels = Paises::model()->findAll(); 
     $data = array(); 
     foreach ($pmodels as $m) 
     $data[$m->id] = $m->nombre;  
     echo CHtml::dropDownList('paises_id', '', $data ,array('empty' => 'Seleccione su pais de procedencia'), 
      array(
       'ajax' => array(
        'type'=>'POST', 
        'url'=>CController::createUrl('estudiantes/cargarprovincias'), 
        'update'=>'#provincias_id', //selector to update 
        ) 
       ) 
      ); 
    ?> 
</div> 

<div class="row"> 
    //This is the part that handles provinces (it doesn't work) 
    <?php echo CHtml::label('Provincia','provincias_id',array ('required'=>true));?> 
    <?php echo CHtml::dropDownList('provincias_id','', array(), array('empty' => 'Seleccione su provincia de procedencia'), 
      array(
       'ajax' => array(
        'type'=>'POST', 
        'url'=>CController::createUrl('estudiantes/cargarlocalidades'), //url to call. 
        //Style: CController::createUrl('currentController/methodToCall') 
        'update'=>'#'.CHtml::activeId($model,'local_id'), //selector to update 
        ) 
       ) 
      ); 
    ?> 
</div> 

<div class="row"> 
    //This handles the locations 
    <?php echo $form->labelEx($model,'local_id'); ?> 
    <?php echo CHtml::dropDownList('local_id','', array(),array('empty' => 'Seleccione su localidad de procedencia'));?> 
    <?php echo $form->error($model,'local_id'); ?> 
</div> 

Это код, который я сделал для контроллера, следуя Wiki:

public function actionCargarprovincias() 
{ 
    $data=Provincias::model()->findAll('parent_id=:parent_id', 
       array(':parent_id'=>(int) $_POST['paises_id'])); 

    $data=CHtml::listData($data,'id','nombre'); 
    foreach($data as $value=>$nombre) 
    { 
     echo CHtml::tag('option', 
       array('value'=>$value),CHtml::encode($nombre),true); 
    } 
} 
public function actionCargarlocalidades() 
{ 
    $data=Localidades::model()->findAll('parent_id=:parent_id', 
       array(':parent_id'=>(int) $_POST['provincias_id'])); 

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

Я интересно, если я что-то пропустил или если Я делаю это неправильно. Может ли кто-нибудь дать мне некоторое руководство?

Заранее спасибо.

ответ

0

Пробовали ли вы с отношениями в YII refer this link

+0

Можете ли вы быть немного более конкретно? – epsilonphi

Смежные вопросы