Hola a todos, necesito vuestra ayuda urgentemente ;) ya que estoy desesperada, ante todo mil gracias por las respuestas.
Estoy utilizando Zend, y quiero anidar dos combox, con javascript.
El primer combo muestra provincias de España, segun la provincia seleccionada se mostrarán en el segundo combo los municipios que forman la misma.
Os pongo el código que tengo porque no encuentro q es lo q falla :(
FORMULARIO:
$provincia= new Zend_Form_Element_Select('id_provincia');
$provincia->setLabel('Provincia: ');
$provincia->setRequired(true);
$tabla_provincias = new Application_Model_DbTable_Provincia();
foreach ($tabla_provincias->listar() as $c) {
$provincia->addMultiOption($c->id_provincia, $c->nombre);
}//Accedo a la BBDD para listar provincias.
$provincia->setAttrib('onChange', 'cargarZonas();');
$zona= new Zend_Form_Element_Select('id_zona');
$zona->setLabel('Zona: ');
$zona->setRequired(true);
$zona->clearValidators();
$tabla_zonas = new Application_Model_DbTable_Zona();
$zona->addMultiOption(NULL,'Elija una zona de su provincia');
METODO CARGARZONAS() EN JAVASCRIPT (LO PUSE EN EL LAYOUT)
<script language="javascript" type="text/javascript">
function cargarZonas(){
var opcionSeleccionada=$("provincia").val();
var selectZona=$('zona');
$(opcionSeleccionada);
$.ajax(
{
async: true,
type: 'POST',
url: '/pedidos/ajax',
data: "id_provincia="+opcionSeleccionada,
dataType: 'json',
beforeSend: function(data){
selectZona.html('<label>Cargando...</label>');
},
success: function(data){
selectZona.append(
$('<option></option>').val(data.id).html(data.version)
);
},
error: function(requestData, strError, strTipoError){
}
});
}
</script>
CONTROLADOR PEDIDOS ACCION AJAX
public function ajaxAction()
{
$this->_helper->viewRenderer->setNoRender();
$this->_helper->layout->disableLayout();
if (!$this->getRequest()->isXmlHttpRequest())
{
$this->_redirect('index');
}
$tabla_zonas= new Application_Model_DbTable_Zona();
$id_provincia = $_POST["id_provincia"];
echo $id_provincia;
$zonas=$tabla_zonas->getAsKeyValueJSON($id_provincia);
echo Zend_Json::encode($zonas);
}
EN EL MODELO TENGO LA TABLA QUE REPRESENTA A LOS DISTINTOS MUNICIPIOS, SE LLAMA ZONA Y TIENE EL METODO getAsKeyValueJSON(), ES DONDE HAGO LA SELECT
public function getAsKeyValueJSON($id_provincia) {
$select = $this->select()
->where('id_provincia = ?', $id_provincia);
$resultados_zonas = $this->fetchAll($select)->toArray();
return $resultados_zonas;
}
MIL GRACIAS POR VUESTRA AYUDA ;), perdonar las molestias pero no domino muy bien esto.