Do you use Form help or Html helper to print form? (cake 1.1 or 1.2 ?)
Just an advice, if you follow Cake conventions, you can write your
associations like that:
var $belongsTo = array(
'School',
'Country',
'Timezone',
'Chattype',
'Chatimage',
'Usertype',
'Status',
);
Another advice, to show us long parts of code, please use
http://bin.cakephp.org/
and give us the link
dev_null a écrit :
> My form is not validating on submission. I'm a newbie, so please be
> gentle. Here's my model:
>
> <?php
> class User extends AppModel {
> var $name = 'User';
> var $belongsTo = array('School' =>
> array('className' => 'School',
> 'conditions' => '',
> 'order' => '',
> 'foreignKey' => ''
> ),'Country' =>
> array('className' => 'Country',
> 'conditions' => '',
> 'order' => '',
> 'foreignKey' => ''
> ),'Timezone' =>
> array('className' => 'Timezone',
> 'conditions' => '',
> 'order' => '',
> 'foreignKey' => ''
> ),'Chattype' =>
> array('className' => 'Chattype',
> 'conditions' => '',
> 'order' => '',
> 'foreignKey' => ''
> ),'Chatimage' =>
> array('className' => 'Chatimage',
> 'conditions' => '',
> 'order' => '',
> 'foreignKey' => ''
> ),'Usertype' =>
> array('className' => 'Usertype',
> 'conditions' => '',
> 'order' => '',
> 'foreignKey' => ''
> ),'Status' =>
> array('className' => 'Status',
> 'conditions' => '',
> 'order' => '',
> 'foreignKey' => ''
> )
> );
> var $validate = array(
> 'firstname' => VALID_NOT_EMPTY,
> 'lastname' => VALID_NOT_EMPTY,
> 'email' => VALID_EMAIL,
> 'password' => VALID_NOT_EMPTY,
> 'confirm' => VALID_NOT_EMPTY
> );
>
> function beforeValidate()
> {
> if( isset($this->data[$this->name]['password']) &&
> ($this->data[$this->name]['password'] != $this->data[$this-
> >name]['confirm']))
> {
> $this->data[name]['password'] = '';
> $this->data[name]['confirm'] = '';
> $this->invalidate('confirm');
> }
> if ( isset($this->data[$this->name]['school_id']) && $this-
> >data[$this->name]['school_id'] == '0') {
> $this->invalidate('school_id');
> }
> if ( isset($this->data[$this->name]['country_id']) && $this-
> >data[$this->name]['country_id'] == '0') {
> $this->invalidate('country_id');
> }
> if ( isset($this->data[$this->name]['timezone_id']) && $this-
> >data[$this->name]['timezone_id'] == '0') {
> $this->invalidate('timezone_id');
> }
>
> return true;
> }
>
> }
> ?>
>
> And here's my controller:
>
> <?php
> class UsersController extends AppController {
> var $layout = 'form';
> var $helpers = array('Html', 'Form', 'Javascript', 'Session');
> var $uses =
> array('User','Usertitle','School','Country','Timezone','Chattype','Chatimage','Usertype','Status');
>
> function newTeacher() {
>
> if (empty($this->data)) {
> //
> // Grab view options arrays from db
> //
> $options = array();
> $options['usertitle'] = $this->Usertitle-
> >generateList(null, 'Usertitle.name ASC', null,
>
> '{n}.Usertitle.id', '{n}.Usertitle.name');
> $options['school'] = $this->School->generateList(null,
> 'School.name ASC', null,
>
> '{n}.School.id', '{n}.School.name');
> $options['country'] = $this->Country-
> >generateList(null, 'Country.name ASC', null,
>
> '{n}.Country.id', '{n}.Country.name');
> $options['timezone'] = $this->Timezone-
> >generateList(null, 'Timezone.name ASC', null,
>
> '{n}.Timezone.id', '{n}.Timezone.name');
> $options['chattype'] = $this->Chattype-
> >generateList(null, 'Chattype.name ASC', null,
>
> '{n}.Chattype.id', '{n}.Chattype.name');
> $chatimage = $this->Chatimage->findAll();
>
>
> // Set select option defaults
> array_unshift($options['usertitle'], '---');
> array_unshift($options['school'], '-- Please Select --');
> array_push($options['school'], '-- New --');
> array_unshift($options['country'], '-- Please Select --');
> array_unshift($options['timezone'], '-- Please Select
> --');
> array_unshift($options['chattype'], 'Type?');
>
> // Build chat image arrays
> $count = count($chatimage);
> for ($ii = 0; $ii < $count; $ii++) {
> $id = $chatimage[$ii]['Chatimage']['image'];
> $title = $chatimage[$ii]['Chatimage']['name'];
> $options['chatimage'][$ii] = array('id' => $id,
> 'title' => $title);
> }
>
>
> // Set initial user defaults
> $user = array('User');
> $user['User'] = $this->User->getColumnTypes();
> foreach ($user['User'] as $field => $type) {
> switch ($type) {
> case 'integer': $type = 0; break;
> case 'string':
> case 'text': $type = ''; break;
> }
> $user['User'][$field] = $type;
> }
> $user['User']['hours'] = '';
> unset($user['User']['id']);
> unset($user['User']['created']);
> unset($user['User']['modified']);
> unset($user['User']['verified']);
>
> // Save to session
> $this->Session->write('options', $options);
> $this->Session->write('user', $user);
>
> // Send info to view
> $this->set('user', $user);
> $this->set('options', $options);
> $this->render();
> exit();
> }
>
> if ( !empty($this->data['User']) ) {
> if ( $this->User->create($this->data) && $this->User-
> >validates() ) {
> $this->flash("Your information has been validated!",
> '/');
> $options = $this->Session->delete('options');
> $options = $this->Session->delete('user');
> exit();
> }
> else {
> $this->validateErrors($this->User);
> $options = $this->Session->read('options');
> $user = $this->Session->read('user');
> $user = array_merge($user, $this->data);
> $this->set('user', $user);
> $this->set('options', $options);
> $this->render();
> exit();
> }
> }
>
>
> }
>
> }
> ?>
>
> If I submit my form without filling anything out, I get the flash
> message.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---