ok, i will read up on that and let you know. Thanks! :) On Aug 2, 3:00 pm, Jeremy Burns | Class Outfit <[email protected]> wrote: > Is it worth looking at the $allowedActions > option?http://book.cakephp.org/view/1297/Configuration > > Jeremy Burns > Class Outfit > > http://www.classoutfit.com > > On 2 Aug 2011, at 10:56, varai wrote: > > > > > Finally I managed to solve the prob after 2 weeks of research and > > reading up. The problem was Cakephp's security component was > > blackholing Ajax's observeField request. So, the security component > > has to be disabled for the observeField to work. Added the following > > beforeFilter code (found from the net) in StudentsController: > > > function beforeFilter()//executed before any controller action logic > > { > > if(isset($this->Security) && $this->RequestHandler->isAjax() && > > $this->action = 'getcities'){ > > $this->Security->enabled = false; > > } > > > } > > > On Jul 30, 3:39 pm, varai <[email protected]> wrote: > >> I'm trying to populate the city select box based on the selected state > >> (which is also a select box) using Ajax. When i select state, the city > >> select box is not being populated. > > >> There are 5 models below: Student, MerryParent, MerryClass, State, > >> City. All of them are related to one another. > > >> Can someone please tell me on what am I doing wrong? thank you. > > >> The following are the models: > >> student.php > > >> <?php > >> class Student extends appModel{ > >> var $name='Student'; > >> var $belongsTo=array('MerryParent','State','City','MerryClass'); > > >> } > >> ?> > > >> merry_parent.php > > >> <?php > >> class MerryParent extends appModel{ > >> var $name='MerryParent'; > >> $hasMany=array( > >> 'Student'=>array( > >> 'className'=>'Student', > >> 'foreignKey'=>'merry_parent_id' > >> ) > >> ); > >> $belongsTo=array('State','City','MerryClass'); > > >> ?> > > >> merry_class.php > > >> <?php > >> class MerryClass extends AppModel{ > >> var $name='MerryClass'; > >> var $hasMany=array > >> ('Student'=>array( > >> 'className'=>'Student', > >> 'foreignKey'=>'class_id' > >> ), > >> 'MerryParent' > >> ); > >> var $belongsTo=array('State','City'); > >> //var $displayField='class_name'; > >> } > >> ?> > > >> city.php > > >> <?php > >> class City extends AppModel{ > >> var $name='City'; > >> var $belongsTo='State'; > >> var $hasMany=array('MerryParent','MerryClass', > >> 'Student'=>array( > >> 'className'=>'Student', > >> 'foreignKey'=>'city_id' > >> ) > >> ); > >> } > >> ?> > > >> state.php > > >> <?php > >> class State extends AppModel{ > >> var $name='State'; > >> var $hasMany=array( > >> 'MerryParent', > >> 'MerryClass', > >> 'City'=>array( > >> 'className'=>'City', > >> 'foreignKey'=>'state_id' > >> //'dependent'=>true > >> ), > >> 'Student'=>array( > >> 'className'=>'Student', > >> 'foreignKey'=>'state_id' > >> ) > >> ); > > >> } > >> ?> > > >> The controllers > >> students_controller.php > > >> <?php > >> class StudentsController extends AppController{ > >> var $name='Students'; > >> var $helpers = array('Html','Form','Ajax','Javascript'); > >> var $components=array('RequestHandler'); > > >> function getcities(){ > > >> $options=$this->Student->City->find('list', > >> > >> array > >> > >> ('conditions'=>array( > >> > >> > >> 'City.state_id'=>$this->data['Student']['state_id'] > >> > >> ), > >> > >> 'group'=>array('City.name') > >> ) > >> > >> );//closing parentheses for find('list'... > > >> $this->render('/students/ajax_dropdown'); > >> } > > >> function add(){ > > >> if (!empty($this->data)){ > >> /*var_dump($this->data); > >> die(debug($this->Student->validationErrors)); */ > >> > >> $student=$this->Student->saveAll($this->data,array('validate'=>'first')); > > >> if (!empty($student)) > >> { > >> $this->Session->setFlash('Your child\'s > >> admission has been > >> received. We will send you an email shortly.'); > >> > >> $this->redirect(array('controller'=>'pages', 'action'=>'home')); > > >> } > > >> } //for if (!empty.... > > >> $states=$this->Student->State->find('list'); > > >> $cities=array(); > >> $this->set(compact('states','cities')); > > >> }//end function} > > >> ?> > > >> merry_parents_controller.php > > >> <?php > >> class MerryParentsController extends AppController{ > > >> var $name='MerryParents'; > > >> } > >> ?> > > >> add.ctp > > >> <?php > >> echo $javascript->link('prototype',false); > > >> echo $form->create('Student'); > >> echo '<fieldset>'; > >> echo '<legend>Student Information</legend>'; > >> echo $form->input('Student.name'); > > >> $options = array('Male'=>'Male','Female'=>'Female'); > >> $attributes = array('value'=>'Male'); > >> echo $form->radio('Student.gender',$options,$attributes); > > >> echo $form->input('Student.dob', array('label'=>'Date of Birth', > >> 'dateFormat'=>'DMY', > >> 'empty'=>true, > >> 'timeFormat' => '', > >> 'minYear' => ( > >> date('Y') - 5 > >> ), > >> 'maxYear' => ( > >> date('Y') - 2 > >> ) > >> )); > >> echo $form->input('Student.class_id', > >> array( > >> 'label'=>'Enquiry Class for', > >> 'empty'=>'Choose one', > >> 'options'=>array('1'=>'Playgroup','2'=>'Nursery','3'=>'LKG', > >> '4'=>'UKG') > >> ) > >> ); > > >> echo '</fieldset>'; > > >> echo '<fieldset>'; > >> echo '<legend>Parent Information</legend>'; > >> //echo $form->input('Student.parent_id', array('type'=>'hidden')); > >> echo $form->input('MerryParent.initial', > >> array('empty'=>true, > >> 'options'=>array('Dr'=>'Dr', > >> 'Mr'=>'Mr', > >> 'Mrs'=>'Mrs', > >> 'Ms'=>'Ms') > >> ) > >> ); > >> echo $form->input('MerryParent.name', > >> array('label'=>'Parent/Guardian > >> Name')); > >> echo $form->input('MerryParent.email'); > >> echo $form->input('MerryParent.landline'); > >> echo $form->input('MerryParent.mobile'); > >> echo $form->input('MerryParent.address'); > >> echo $form->input('Student.state_id'); > >> echo $form->input('Student.city_id'); > >> echo $form->input('MerryParent.postal_code'); > > >> $options = array('url' => 'getcities', 'update' => > >> 'StudentCityId'); > >> echo $ajax->observeField('StudentStateId', $options); //observes > >> the drop down > >> changes in state id and makes an xmlHttpRequest when its > >> contents have changed. > > >> echo '</fieldset>'; > > >> echo $form->end('Submit'); > >> ?> > > >> ajax_dropdown.ctp > > >> <?php foreach($options AS $k=>$v) : ?> > >> <option value="<?php echo $k; ?>"><?php echo $v; ?></option> > >> <?php endforeach; ?> > > > -- > > Our newest site for the community: CakePHP Video > > Tutorialshttp://tv.cakephp.org > > Check out the new CakePHP Questions sitehttp://ask.cakephp.organd help > > others with their CakePHP related questions. > > > To unsubscribe from this group, send email to > > [email protected] For more options, visit this group > > athttp://groups.google.com/group/cake-php
-- 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
