Here's the code.  I still can't get it to update rather than insert.  
What am I doing wrong?

  function beforeFilter() {
    $this->Wizard->steps = array('profile', 'merit', 'finance', 
'education', 'endorsement');
  }
 
  function wizard($step = null) {
      if(isset($this->passedArgs['1']) || 
$this->Session->read('application_id')) //if application already 
defined, load it
      {
        //Ensure the user is authorized to edit the application
        if(isset($this->passedArgs['1']))
        {$this->Session->write('application_id', $this->passedArgs['1']);}
        $application = 
$this->Application->findById($this->Session->read('application_id'));

        if($application['Application']['user_id'] == 
$this->Auth->user('id'))
        {
        }
        else
        {
          $this->Session->setFlash('You do not have authorization to 
view this.');
          $this->Session->delete('application_id');
          $this->redirect('/applications');
        }
       
      }
      else //if not entering with previously started application, start one
      {
        //create application record
        $this->Application->create();
        $this->Application->save(array('user_id'=>$this->Auth->user('id')));
        $this->Session->write('application_id', 
$this->Application->getInsertID());
      }
    $this->Wizard->process($step);
  }

    function _processMerit() {
      App::import('Sanitize');
      Sanitize::clean($this->data);
      switch($this->params['form']['action'])
      {
        case 'Continue':
          if($this->Merit->save($this->data)) {
            return true;
          }
          else
          {
            $this->Session->setFlash('Sorry, the information you\'ve 
entered is incorrect.');
            return false;
          }
          break;
        case 'Back':
          $this->redirect('/applications/wizard/profile');
          break;
        case 'Save':
          if($this->Merit->save($this->data)) {
            $this->Session->setFlash('Your changes have been saved.');
          }
          else
          {
            $this->Session->setFlash('Sorry, the information you\'ve 
entered is incorrect.');
          }
          break;
      }
      return false;
    }

Jon Chin



brian wrote:
> On Fri, Jun 19, 2009 at 2:04 AM, Jon Chin<[email protected]> wrote:
>   
>> Thanks for the tip.  Sadly, I'm still having problems with it.  When I
>> add <?=$form->input('id');?> to the view, all it does is generate <input
>> type="hidden" name="data[Application][id]" value="" id="ApplicationId"
>> /> which doesn't change anything in my controller when I print the
>> contents of $this->data.  I also tried making the field called
>> application_id in the form, but it didn't have an effect either.
>>
>> It's really stumping me.  Any idea what's going on?  Since my primary
>> key on Merit is application_id, should Cake already know that if I'm
>> trying to set $this->Merit->id?
>>
>>     
>
> The PK for Merit should be "id", not "application_id". That should be
> a foreign key pointing to applications table.
>
> If you post the code for the controller action we might be able to sort it 
> out.
>
> >
>   

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

Reply via email to