Я как бы новичок, когда дело доходит до программирования, но я работаю над тем, чтобы стать лучше. Сказав это, я пойду к делу. Я разрабатываю приложение среднего размера, один из модулей заботится о регистрации новых пользователей. Форма включает в себя местоположение пользователя, которое делится на 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);
}
}
Я интересно, если я что-то пропустил или если Я делаю это неправильно. Может ли кто-нибудь дать мне некоторое руководство?
Заранее спасибо.
Можете ли вы быть немного более конкретно? – epsilonphi