In a view I have three inmputs add, name, country and Province, the
Countries Provinces the filter through the method jQuery
$. getJSON and it works to perfection.
When I apply the same code to Edit, I have seen through the
Firebug that it returns no data jonson, I leave below
the code I use,, if someone could give me some idea.
I use CakePHP 1.3.8
Thanks
/views/cities/add.ctp
<div class="cities form">
<?php echo $this->Html->script('list_provinces'); ?>
<?php echo $this->Form->create('City'); ?>
<fieldset>
<legend><?php __('Add City'); ?></legend>
<?php
echo $this->Form->input('nombre');
echo $this->Form->input('country_id', array('options' =>
$countries, 'empty' =>
'-- Seleccione Pais --', 'id' => 'country'));
?>
<div id="provincias" style="display: none;">
<?php
echo $this->Form->input('province_id', array('options' =>
$provinces, 'empty' =>
'-- Seleciones Provincia --', 'id' => 'provincia'));
?>
</div>
</fieldset>
<?php echo $this->Form->end(__('Submit', true)); ?>
</div>
//views/cities/edit.ctp
<div class="cities form">
<?php echo $this->Html->script('list_provinces'); ?>
<?php echo $this->Form->create('City');?>
<fieldset>
<legend><?php __('Edit City'); ?></legend>
<?php
echo $this->Form->input('id');
echo $this->Form->input('nombre');
echo $this->Form->input('country_id', array('options'
=>
$countries, 'empty' =>
'-- Seleccione Pais --', 'id' => 'country'));
?>
<div id="provincias" >
<?php
echo $this->Form->input('province_id', array('options' =>
$provinces, 'empty' =>
'-- Seleciones Provincia --', 'id' => 'provincia'));
?>
</div>
</fieldset>
<?php echo $this->Form->end(__('Submit', true));?>
</div>
//controllers/citiescontroller.ctp
<?php
class CitiesController extends AppController {
var $name = 'Cities';
var $components = array('RequestHandler');
public function obtener_provincias() {
if($this->RequestHandler->isAjax()) {
$this->set('provinces', $this->City->Province->find('list',
array('conditions' =>
array('province.country_id' =>
$this->params['url']['countryId']),
'recursive' => -1)));
}
}
function index() {
$this->City->recursive = 0;
$this->set('cities', $this->paginate());
}
function view($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid city',
true));
$this->redirect(array('action' => 'index'));
}
$this->set('city', $this->City->read(null, $id));
}
function add() {
if (!empty($this->data)) {
$this->City->create();
if ($this->City->save($this->data)) {
$this->flashSuccess('la ciudad The
city has been saved','index');
/*$this->Session->setFlash(__('The
city has been saved', true));
$this->redirect(array('action' =>
'index'));
*/
} else {
$this->Session->setFlash(__('The city
could not be saved. Please,
try again.', true));
}
}
$countries = $this->City->Country->find('list');
$provinces = $this->City->Province->find('list');
$this->set(compact('countries', 'provinces'));
}
function edit($id = null) {
if (!$id && empty($this->data)) {
$this->Session->setFlash(__('Invalid city',
true));
$this->redirect(array('action' => 'index'));
}
if (!empty($this->data)) {
if ($this->City->save($this->data)) {
//$this->flashSuccess('la ciudad The city has
been saved','index');
$this->Session->setFlash(__('The city has
been saved', true));
$this->redirect(array('action' =>
'index'));
} else {
$this->Session->setFlash(__('The city
could not be saved. Please,
try again.', true));
}
}
if (empty($this->data)) {
$this->data = $this->City->read(null, $id);
}
$countries = $this->City->Country->find('list');
$provinces = $this->City->Province->find('list');
$this->set(compact('countries', 'provinces'));
}
function delete($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid id for
city', true));
$this->redirect(array('action'=>'index'));
}
if ($this->City->delete($id)) {
$this->Session->setFlash(__('City deleted',
true));
$this->redirect(array('action'=>'index'));
}
$this->Session->setFlash(__('City was not deleted',
true));
$this->redirect(array('action' => 'index'));
}
}
?>
//views/cities/obtener_provinciast.ctp
<?php
if(isset($provinces)) {
echo $this->Js->object($provinces);
}
?>
//webroot/js/list_provinces.js
<?php
if(isset($provinces)) {
echo $this->Js->object($provinces);
}
?>
//webroot/js/list_provinces.js
$(document).ready(function(){
$('#country').live('change', function() {
if($(this).val().length != 0) {
$.getJSON('obtener_provincias',
{
countryId: $(this).val()
},
function(provinces) {
if(provinces !== null) {
populateProvinceList(provinces);
}
});
}
});
});
function populateProvinceList(provinces) {
var options = '';
$.each(provinces, function(index, province) {
options += '<option value="' + index + '">' + province + '</
option>';
});
$('#provincia').html(options);
$('#provincias').show();
--
Our newest site for the community: CakePHP Video Tutorials
http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others
with their CakePHP related questions.
To unsubscribe from this group, send email to
[email protected] For more options, visit this group at
http://groups.google.com/group/cake-php