Are you sure your models validate when you try to save on edit? Change
your code to test if they validate before saving. That might lead you
to the problem.

On Wed, Feb 4, 2009 at 4:46 AM, xeroxss <xero...@gmail.com> wrote:
>
> Hello to all,
>
> I'm having trouble with the code that I'm working with I have two
> tables named users and profiles
> the user table holds the value for user account creation and logging
> in the profiles table hold the additional information of the user.
> There are cases that I need to update the secondary field of the user
> after creating an account or set their status as active or inactive
> but I couldn't make to work the saving of the associated data when I
> try to update by calling the function call in the edit profile in my
> users_controller I'm not sure if it has something to do with this code
>
>  $user =($this->User->save($this->data));
>
>        $this->data['Profile']['user_id'] = $this->User->id = $id;
>
>                $this->User->Profile->save($this->data);
>
>                 $this->redirect(array('action'=>'index'),null, true);
>
> I can successfully create an account and retrieve the data but I
> couldn't make it work in edit/update mode I'm not sure what I'm
> missing...
>
> DROP TABLE IF EXISTS `users`;
> CREATE TABLE IF NOT EXISTS `users`
>  (
>  `id`                      int(20)unsigned     NOT NULL
> auto_increment,
>  `username`                varchar(255)                NOT NULL,
>  `password`                varchar(40)                 NOT NULL,
>  `email`                   varchar(255)                NOT NULL,
>  `created`                 datetime            NOT NULL,
>  `modified`                datetime            NOT NULL,
>  `confirmed`               varchar(1)          NOT NULL default '0',
>  `confirm_code`            varchar(36)                 NOT NULL,
>
>  PRIMARY KEY  (`id`),
>  UNIQUE KEY `email` (`email`),
>  UNIQUE KEY `confirm_code` (`confirm_code`)
> ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
>
>
> In my Profiles table I have these
>
> DROP TABLE IF EXISTS `profiles`;
> CREATE TABLE IF NOT EXISTS `profiles`
> (
> `id`                    int(20)unsigned     NOT NULL auto_increment,
> `firstname`             varchar(150)            NOT NULL,
> `lastname`              varchar(150)            NOT NULL,
> `addressone`            varchar(250)            NOT NULL,
> `cityone`               varchar(150)            NOT NULL,
> `stateone`              varchar(150)            NOT NULL,
> `zipone`                varchar(50)             NOT NULL,
> `country`               varchar(100)            NOT NULL,
> `landline`              varchar(100)            NOT NULL,
> `mobile`                varchar(100)            NOT NULL,
> `addresstwo`            varchar(250)        NOT NULL,
> `citytwo`               varchar(150)            NOT NULL,
> `statetwo`              varchar(150)            NOT NULL,
> `ziptwo`                varchar(50)             NOT NULL,
> `landlinetwo`           varchar(100)            NOT NULL,
> `mobiletwo`             varchar(100)            NOT NULL,
> `usertype`              varchar(20)         NOT NULL default
> 'Employee',
> `user_id`               int(20) unsigned    NOT NULL,
> PRIMARY KEY (`id`),
> FOREIGN KEY (`user_id`) REFERENCES users (`id`)
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;
>
>
> User Model
>
> <?php  //User Models
>
> class User extends AppModel {
>
>        var $name = 'User';
>
>    var $hasOne = array(
>
>        'Profile' => array(
>        'className' => 'Profile',
>        'dependent' => true  //This set the associated data in
> profiles table to be deleted
>            ),
>
>
>        var $validate = array(
>                'username' => array(
>                        'notempty' => array(
>                                'rule' => array('minLenght', '8'),
>                                'required' => true,
>                                'allowEmpty' => false,
>                                'message' => 'Email field cannot be empty'
>                        ),
>                        'unique' => array(
>                                'rule' => array('checkUnique', 'username'),
>                                'message' => 'User name taken. Use another'
>                        )
>                ),
>                'password' => array(
>                        'notempty' => array(
>                                'rule' => array('minLenght', 8),
>                                'required' => true,
>                                'allowEmpty' => false,
>                                'message' => 'Password cannot be empty.'
>                        ),
>                        'passwordSimilar' => array(
>                                'rule' => 'checkPasswords',
>                                'message' => 'Different password re entered.'
>                        )
>                )
>
>        );
>
> }
> ?>
>
>
> Profile Model
>
> <?php
>
>    class Profile extends AppModel {
>
>    var $name = 'Profile';
>
>    var $belongsTo = array (
>
>        'User' =>array (
>
>        'className' => 'User',
>
>                )
>        );
>
>        var $validate = array(
>
>        'firstname' => array(
>        'rule'=> 'notEmpty',
>        'message' =>'Field must not be empty, please provide your
> firstname'
>        ),
>
>        'lastname' => array(
>        'rule'=> 'notEmpty',
>        'message' =>'Field must not be emptry, please provide your
> lastname'
>        ),
>
>        'addressone' => array(
>        'rule'=> 'notEmpty',
>        'message' =>'Field must not be empty, please provide your
> address'
>        ),
>
>        'cityone' => array(
>        'rule'=> 'notEmpty',
>        'message' =>'Field must not be empty, please provide your
> city'
>        ),
>
>        'stateone' => array(
>        'rule'=> 'notEmpty',
>        'message' =>'Field must not be empty, please provide your
> state or province'
>        ),
>
>        'country' => array(
>        'rule'=> 'notEmpty',
>        'message' =>'Field must not be empty, please provide your
> country'
>        ),
>
>        'zipone' => array(
>        'rule'=> 'notEmpty',
>        'message' =>'Field must not be empty, please provide your zip
> code'
>        ),
>
>        'landline'=> array(
>        'rule'=> 'notEmpty',
>        'message' =>'Field must not be empty, please provide your
> landline for contacts'
>        ),
>
>        'mobile' => array(
>        'rule' => 'notEmpty',
>        'message' =>'Field must not be empty, please provide your
> mobile for sending SMS'
>            ),
>
>
>        );
>
> }
>
> ?>
>
> Users Controller
>
> <?php
> class UsersController extends AppController {  #Start AppController
>
>        var $name = 'Users';
>    var $helpers = array ('Html', 'Form');
>        var $components = array ('Email');
>
>  function create_user () {
>
>            if (!empty($this->data)) {
>
>            if(isset($this->data['User']['password2']))
>
>            $this->data['User']['password2hashed'] = $this->Auth-
>>password($this->data['User']['password2']);
>
>            $this->data['User']['confirm_code'] = String::uuid();
>
>                        $this->User->create();
>
>            $user =($this->User->save($this->data));
>
>
>            if(!empty($user)){
>
>                $this->data['Profile']['user_id'] = $this->User->id;
>
>                $this->User->Profile->save($this->data);
>
>                 $this->redirect(array('action'=>'index'),null, true);
>            }
>                }
>        }
>
>  function edit_profile($id = null) {
>
>            unset($this->User->validate['password'],
>                $this->User->validate['email'],
>                $this->User->validate['username']);
>
>    $this->User->id = $id;
>
>
>        if (empty($this->data)) {
>
>                $this->data = $this->User->read();
>
>        if(isset($this->data['User']['password2']))
>
>            $this->data['User']['password2hashed'] = $this->Auth-
>>password($this->data['User']['password2']);
>
>            $this->data['User']['confirm_code'] = String::uuid();
>
>
>        $user =($this->User->save($this->data));
>
>        $this->data['Profile']['user_id'] = $this->User->id = $id;
>
>                $this->User->Profile->save($this->data);
>
>                 $this->redirect(array('action'=>'index'),null, true);
>
>           }
>    }
>
>
>
> ?>
>
> This is my edit_profile view
>
>
> <h2>User Account Editing</h2>
>
> <?php if ( $session->check('Message.auth')) $session->flash('auth'); ?
>>
>
> <?php e ($form->create('User', array('controller'=>'profiles',
> 'action' =>'edit_profile')));?>
>
>
>        <fieldset>
>
>        <?php echo $form->input('id', array('type'=>'hidden')); ?>
>
>        <?php echo $form->input ('Profile.firstname', array ('class'=>
> 'fullwidth', 'label'=> 'Firstname:'));?>
>
>        <?php echo $form->input ('Profile.lastname', array ('class'=>
> 'fullwidth', 'label'=> 'Lastname:'));?>
>
>        <?php echo $form->input ('Profile.addressone', array
> ('class'=> 'fullwidth', 'label'=> 'Address:'));?>
>
>        <?php echo $form->input ('Profile.cityone', array ('class'=>
> 'fullwidth', 'label'=> 'City:')); ?>
>
>        <?php echo $form->input ('Profile.stateone', array ('class'=>
> 'fullwidth', 'label'=> 'State/Province:')); ?>
>
>        <?php echo $form->input ('Profile.zipone', array ('class'=>
> 'fullwidth','label'=> 'Zip Code:')); ?>
>
>        <?php echo $form->input ('Profile.country', array ('class'=>
> 'fullwidth', 'label' => 'Country:')); ?>
>
>        <?php echo $form->input ('Profile.landline', array ('class' =>
> 'fullwidth', 'label' => 'Telephone:')); ?>
>
>        <?php echo $form->input ('Profile.mobile', array ('class' =>
> 'fullwidth', 'label' => 'Mobile')); ?>
>
>        <?php echo $form->input('confirmed', array('options' => array
> (0,1))); ?>
>        <?php echo'<p>Set the user account as active <b>1</b> or
> inactive <b>0</b></p>'; ?><br/>
>
>        <?php echo $form->input ('Profile.usertype', array
> ('type'=>'hidden', 'value'=>'Customer')); ?>
>
>        <?php
>
>         echo '<h3>Optional Secondary Field</h3>';
>
>                echo ($form->input ('Profile.addresstwo', array
> ('class'=>'fullwidth', 'label'=>'Second Address:')));
>
>                echo ($form->input ('Profile.citytwo', array
> ('class'=>'fullwidth','label'=>'City:')));
>
>                echo ($form->input ('Profile.statetwo', array
> ('class'=>'fullwidth', 'label'=>'State:')));
>
>                echo ($form->input ('Profile.ziptwo', array
> ('class'=>'fullwidth', 'label'=>'Zip Code:')));
>
>                echo ($form->input ('Profile.landlinetwo', array
> ('class'=>'fullwidth', 'label'=>'Fixedline:')));
>
>                echo ($form->input ('Profile.mobiletwo', array
> ('class'=>'fullwidth', 'label'=>'Mobile:')));
>
>
>                ?>
>
>         <?php echo ($form->submit('Update', array('div' => false,
> 'class' => 'submitbutton'))); ?>
>
>        </fieldset>
> <?php e($form->end()); ?>
>
> Thanks in advance for any help, cheers!
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to