echo $this->Form->input('country_id',array(
    'id' => 'country_id',
    'empty' =>''));
echo $this->Form->input('city_id',array(
    'id' => 'city_id',
    'empty' =>''));
<?php
//AJAX for Dynamic Drop down
$this->Js->get('#country_id')->event('change',
    $this->Js->request(array(
        'controller'=>'countries',
        'action' =>'get_by_country',
    ), array(
        'update' =>'#city_id',
        'async' => true,
        'method' => 'Post',
        'dataExpression'=>true,
        'data'=> $this->Js->serializeForm(array(
                'isForm' => true,
                'inline' => true
            ))
    ))
);
// END AJAX
?>
public function get_by_country($id=null) {
    $country_id = $this->request->data['Country']['country_id'];
    $this->loadModel("City");
    $subcategories = $this->City->find('list', array(
        'conditions' => array('City.country_id' => $country_id),
        'fields' => 'description',
        'recursive' => -1
    ));
    $this->set('cities',$subcategories);
    $this->layout = 'ajax';
}
<option><?php ?></option> <?php foreach ($cities as $key => $value): ?> <option value="<?php echo $key; ?>"><?php echo $value; ?></option> <?php endforeach; ?>
Labels: CakePHP 2.x, Scripts, Tutorial