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
-~----------~----~----~----~------~----~------~--~---