Mam trzy selecty: Kraj, Region i Miasto.
<?php echo select_tag
('kraj', options_for_select
($kraj_array, isset($kraj) ?
$kraj : 1), 'style=width: 170px;'); ?> <span id="regionoo">
<?php echo select_tag
('region', options_for_select
($region_array, isset($region) ?
$region : 0), 'style=width: 170px;'); ?> </span>
<?php echo observe_field
('kraj', array('update' => 'regionoo', 'url' => '@region', 'with' => "'param=' + value", 'frequency' => '1')); ?>
<span id="miastooo">
<?php echo select_tag
('miasto', options_for_select
($city_array, isset($miasto) ?
$miasto : 0), 'style=width: 170px;'); ?> </span>
<?php echo observe_field
('region', array('update' => 'miastooo', 'url' => '@miasto', 'with' => "'param=' + value", 'frequency' => '1')); ?> <?php echo select_tag
('kategoria', options_for_select
($category_array, isset($kategoria) ?
$kategoria : 0), 'style=width: 170px;'); ?>
W kontrolerze:
public function executeMiasto() {
$region_id = $this->getRequestParameter('param');
$c = new Criteria();
if(isset($region_id) && $region_id != 0
) $c->add(CityPeer::REGION_NAME, $region_id);
$c->addAscendingOrderByColumn(CityPeer::NAME);
$a = CityPeer::doSelect($c);
$city_array[0] = 'Bliskość miast';
foreach($a as $wartosc)
$city_array[$wartosc->getId()] = $wartosc->getName();
$this->city_array = $city_array;
}
public function executeRegion() {
$kraj_id = $this->getRequestParameter('param');
$c = new Criteria();
if(isset($kraj_id) && $kraj_id != 0
) $c->add(RegionPeer::COUNTRY_NAME, $kraj_id);
$c->addAscendingOrderByColumn(RegionPeer::NAME);
$a = RegionPeer::doSelect($c);
$region_array[0] = 'Region';
foreach($a as $wartosc)
$region_array[$wartosc->getId()] = $wartosc->getName();
if(!empty($region_array)) $this->region_array = $region_array;
}
Za pierwszym razem wszystko działa, ale im dłużej zmieniam między sobą wartości to nic się nie zmienia zwłaszcza miasto. Czemu? Robię coś źle? Przy 2 dowolnych polach wszystko gra. Po dodaniu tego trzeciego mam ten problem. FireBug nic nie pokazuje. Jakiś pomysł? Robił ktoś coś podobnego?