Hi Jodator, Thank you Jodator, I presumed I had the conventions wrong but the CakePHP conventions page was convulsive and difficult to piece together.
I have made the conventions changes and its validating great! :D It is always the little things lol Thanks again On Tuesday, 11 December 2012 07:00:17 UTC, jodator wrote: > > Why do you have $name = 'UserInfos' while your class is UserInfo (and also > 'Users')? Try to make it by Cake conventions and it should validate all > associeated models on saveAll(). > > I would drop those lines, as they are not needed. And try changing > UsrInfos to UserInfo in form generation. > > Also: > > $this->User->create(); > *// not needed:* $this->loadModel('UserInfo'); > > UserInfo is available in $this->User->UserInfo (whith your current belongs > to in $this->User->UserInfo). > > And: > > > 'UsersInfos' => array( // why not just UserInfo ? > 'className' => 'users_infos', //Class name should be: UserInfo > > Also read about associations in CakePHP, your foreign keys should be > user_id (not users_id). It's easier to go by Cake's conventions. > > > > On Tuesday, December 11, 2012 1:08:38 AM UTC+1, Robert Hunt wrote: >> >> Hi All, >> >> I hope someone can help clear this up for me. >> >> Basically I have two models producing fields in a form but when saving it >> only validates the parent model. >> >> I have attempted to use saveAssociated and I have tried validating the >> data on a per model basis with no success. >> >> Here is my code: >> >> *User Model* >> >>> class User extends AppModel { >>> public $name = 'Users'; >>> var $hasOne = array( >>> 'UsersInfos' => array( >>> 'className' => 'users_infos', >>> 'foreignKey' => 'users_id' >>> ) >>> ); >>> var $hasMany = array( >>> 'UsersIps' => array( >>> 'className' => 'users_ips', >>> 'foreignKey' => 'users_id' >>> ), >>> 'UsersStats' => array( >>> 'className' => 'users_stats', >>> 'foreignKey' => 'users_id' >>> ), >>> 'UsersSkills' => array( >>> 'className' => 'users_skills', >>> 'foreignKey' => 'users_id' >>> ), >>> 'UsersBuildings' => array( >>> 'className' => 'users_buildings', >>> 'foreignKey' => 'users_id' >>> ), >>> 'UsersItems' => array( >>> 'className' => 'users_items', >>> 'foreignKey' => 'users_id' >>> ), >>> 'UsersMinerals' => array( >>> 'className' => 'users_minerals', >>> 'foreignKey' => 'users_id' >>> ) >>> ); >>> >>> public $validate = array( >>> 'username' => array( >>> 'required' => array( >>> 'rule' => array('notEmpty'), >>> 'message' => 'Please enter a Username' >>> ), >>> 'isUnique' => array( >>> 'rule' => array('isUnique'), >>> 'on' => array('create'), >>> 'message' => 'This Username is already taken, please choose another' >>> ) >>> ), >>> 'password' => array( >>> 'required' => array( >>> 'rule' => array('notEmpty'), >>> 'message' => 'Please enter a Password' >>> ), >>> 'minLength' => array( >>> 'rule' => array('minLength', '6'), >>> 'message' => 'Your Password must be a minimum of 6 characters long' >>> ) >>> ) >>> ); >> >> >> *UserInfo Model * >> >>> class UserInfo extends AppModel { >>> public $name = 'UsersInfos'; >>> public $useTable = 'users_infos'; >>> >>> public $belongsTo = array( >>> 'Users' => array( >>> 'className' => 'Users', >>> 'foreignKey' => 'users_id' >>> ) >>> ); >>> >>> public $validate = array( >>> 'first_name' => array( >>> 'required' => array( >>> 'rule' => array('notEmpty'), >>> 'message' => 'Please enter your First Name' >>> ) >>> ), >>> 'last_name' => array( >>> 'required' => array( >>> 'rule' => array('notEmpty'), >>> 'message' => 'Please enter your Last Name' >>> ) >>> ), >>> 'email' => array( >>> 'required' => array( >>> 'rule' => array('notEmpty'), >>> 'message' => 'Please enter your Email' >>> ), >>> 'email' => array( >>> 'rule' => array('email'), >>> 'message' => 'Please enter a valid Email' >>> ), >>> 'isUnique' => array( >>> 'rule' => array('isUnique'), >>> 'on' => array('create'), >>> 'message' => 'This Email is already taken, duplicate accounts are not >>> allowed' >>> ) >>> ), >>> 'age' => array( >>> 'required' => array( >>> 'rule' => array('notEmpty'), >>> 'message' => 'Please select your Age' >>> ) >>> ), >>> 'sex' => array( >>> 'required' => array( >>> 'rule' => array('notEmpty'), >>> 'message' => 'Please select your Sex' >>> ) >>> ), >>> 'location' => array( >>> 'required' => array( >>> 'rule' => array('notEmpty'), >>> 'message' => 'Please enter your General Location' >>> ) >>> ), >>> 'race_id' => array( >>> 'required' => array( >>> 'rule' => array('notEmpty'), >>> 'message' => 'Please select your Race' >>> ) >>> ) >>> ); >> >> >> *Create Account Form* >> >>> echo $this->Session->flash(); >>> echo $this->Form->create('User'); >>> echo $this->Form->input('User.username', array( >>> 'label' => 'User:<br>' >>> ) >>> ); >>> echo $this->Form->input('User.password', array( >>> 'label' => 'Pass:<br>' >>> ) >>> ); >>> echo $this->Form->input('UsersInfos.first_name', array( >>> 'label' => 'First Name:<br>' >>> ) >>> ); >>> echo $this->Form->input('UsersInfos.last_name', array( >>> 'label' => 'Last Name:<br>' >>> ) >>> ); >>> echo $this->Form->input('UsersInfos.email', array( >>> 'label' => 'Email:<br>' >>> ) >>> ); >>> echo $this->Form->input('UsersInfos.age', array( >>> 'type' => 'select', >>> 'options' => array_combine(range(14,100), range(14,100)), >>> 'label' => 'Select Your Age:<br>', >>> 'empty' => 'Your Age' >>> ) >>> ); >>> echo $this->Form->input('UsersInfos.sex', array( >>> 'type' => 'select', >>> 'options' => array( >>> 'm' => 'Male', >>> 's' => 'Female' >>> ), >>> 'label' => 'Select Your Sex:<br>', >>> 'empty' => 'Your Sex' >>> ) >>> ); >>> echo $this->Form->input('UsersInfos.location', array( >>> 'label' => 'Location:<br>' >>> ) >>> ); >>> // TODO : generate $raceIDs variable using race table >>> $raceIDs = array(0 => 'Terran', 1 => 'Nexus'); >>> echo $this->Form->input('UsersInfos.race_id', array( >>> 'type' => 'select', >>> 'options' => $raceIDs, >>> 'label' => 'Choose Your In-Game Race:<br>', >>> 'empty' => 'Choose Your Race' >>> ) >>> ); >>> echo $this->Form->submit('Go!', array( >>> 'class' => 'btn' >>> ) >>> ); >>> echo $this->Form->end(); >> >> >> *Create Account Action* >> >>> public function createAccount() { >>> if ($this->request->is('post') || $this->request->is('put')) { >>> $this->User->create(); >>> $this->loadModel('UserInfo'); >>> $dbo = $this->User->getDataSource(); >>> $now = $dbo->expression('NOW()'); >>> $this->request->data['UsersInfos']['date_created'] = $now ; >>> $this->request->data['UsersInfos']['date_modified'] = $now; >>> $this->request->data['UsersInfos']['register_ip'] = >>> $this->request->clientIp(); >>> >>> debug($this->request->data); >>> >>> if ($this->User->saveAll($this->request->data, array('validate' => >>> 'first'))) >>> $this->Session->setFlash(__('Your account was successfully >>> created!')); >>> else >>> $this->Session->setFlash(__('Your account could not be created, >>> please check your entries and try again')); >>> } >>> } >> >> >> *The data returned* >> >> *\app\Controller\UsersController.php* (line *53*) >> array( >> 'User' => array( >> 'password' => '*****', >> 'username' => 'mrenigma' >> ), >> 'UsersInfos' => array( >> 'first_name' => '', >> 'last_name' => '', >> 'email' => '', >> 'age' => '', >> 'sex' => '', >> 'location' => '', >> 'race_id' => '', >> 'date_created' => object(stdClass) { >> type => 'expression' >> value => 'NOW()' >> }, >> 'date_modified' => object(stdClass) { >> type => 'expression' >> value => 'NOW()' >> }, >> 'register_ip' => '127.0.0.1' >> ) >> ) >> >> Any help would be much appreciated with this, if you need any more >> information then please let me know and I will do my best to provide it. >> > -- Like Us on FaceBook https://www.facebook.com/CakePHP Find us on Twitter http://twitter.com/CakePHP --- You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to cake-php@googlegroups.com. To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com. Visit this group at http://groups.google.com/group/cake-php?hl=en.