I see, so we also needed to provide the id of 'children' (TelephonyNumber)
that belongs to the 'parent' (Person). but i have a different problem, in my
case, i also can adding some ShiftDetail (child), on the page, but not to
create a new Shift (parent) just adding the ShiftDetail to the exist Shift.

but i now get the understanding, when i don't provide the id for ShiftDetail
on the form, Cake will just create new Shift (parent) and correlate that
ShiftDetail with the new Shift, even i triggered on the exist Shift
(shifts/edit/1).

To my problem. i'm going to 'pragmatic' approach on the edit function on
controller

if ($this->Shift->save($this->data)) { // to update the Shift (parent)
   //adding new ShiftDetail to the current Shift
   $this->Shift->ShiftDetail->saveAll($this->data, array('validate' =>
'first'));
}

Thank's, now i know why saveAll didn't work before. but i still wonder if
the process can done in one function $this->Shift->saveAll, to update +
adding (if users add new).


On Thu, Sep 10, 2009 at 3:59 PM, WebbedIT <p...@webbedit.co.uk> wrote:

>
> Here is one of my forms which updates a Person model and User
> (hasOne), TelephonyNumber (hasMany) and OnlineAddress (hasMany)
>
> Edit View:
>
> echo $form->create('Person');
>  echo $form->input('Person.id');
>  echo $form->input('Person.title_id');
>  echo $form->input('Person.first_name');
>  echo $form->input('Person.middle_name');
>  echo $form->input('Person.last_name');
>  echo $form->input('Person.gender_id');
>  echo $this->element('date_jscalendar', array
> ('id'=>'PersonDateOfBirth', 'model'=>'Person',
> 'field'=>'date_of_birth', 'label'=>'Date of Birth'));
>  echo $form->input('TelephonyNumber.0.id');
>  echo $form->input('TelephonyNumber.0.parent_model', array
> ('type'=>'hidden', 'value'=>'Person'));
>  echo $form->input('TelephonyNumber.0.type_id', array
> ('type'=>'hidden', 'value'=>51));
>  echo $form->input('TelephonyNumber.0.number', array
> ('label'=>'Telephone'));
>  echo $form->input('OnlineAddress.0.id');
>  echo $form->input('OnlineAddress.0.parent_model', array
> ('type'=>'hidden', 'value'=>'Person'));
>  echo $form->input('OnlineAddress.0.type_id', array('type'=>'hidden',
> 'value'=>54));
>  echo $form->input('OnlineAddress.0.address', array
> ('label'=>'Email'));
>  echo $form->input('User.id');
>  echo $form->input('User.username');
>  echo $form->input('User.password', array('value'=>'', 'label'=>'New
> Password'));
>  echo $form->input('User.password_confirm', array('type'=>'password',
> 'label'=>'Confirm Password', 'value'=>''));
>  echo $form->input('User.is_active', array('label'=>'Active',
> 'options' => array('1' => 'Yes', '0' => 'No')));
>  echo $form->input('User.is_deleted', array('label'=>'Deleted',
> 'options' => array('0' => 'No', '1' => 'Yes')));
>  echo $form->input('User.user_group_id');
> echo $form->end('Submit');
>
> Controller:
>
> if ($this->Person->saveAll($this->data, array('validate'=>'first'))) {
>  $this->Session->setFlash('User updated');
>  $this->redirect('view/'.$this->Person->id);
> } else {
>  $this->Session->setFlash('User not updated, correct errors and
> resubmit');
> }
>
> Simple, just make sure you have the right ID values included in the
> form.
>
> P.S. The TelephonyNumber and OnlineAddress form fields are named
> differently due to their hasMany associations
> >
>


-- 
Mukhamad Ikhsan
+6281572181283
Y!id:ikhsan.only
http://www.diodachi.com

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