在编程方面,我是一个新手,但我正在努力变得更好。话虽如此,我会谈到这一点。我正在开发一个中型应用程序,其中一个模块负责新用户的注册。表格包括用户的位置,除以3:国家(Paises),省(Provincias)和地点(Localidades),您可能已经猜到了,一个国家/地区包含多个省份,一个省有很多位置像这篇文章我用作Yii Framework's Wiki的指南。尽管我尝试了所有的努力,但我的工作仍然无法完成,省份下拉列表从未填充过,我甚至无法尝试没有省份的地点。
以下是View中的代码:
<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);
}
}
我想知道我是否错过了什么或者我是否做错了。有人可以给我一些指导吗?
提前致谢。