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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
Visit this group at http://groups.google.com/group/cake-php?hl=en.


Reply via email to