Patter,
 So I just updated my plugin which is using a lot of this.  I think
what I ended up doing is actually pretty clean.  I took some cues from
what you said as far as the updateObject, but I didn't need to make an
embeddedForm function because I'm deleting the object there.  You can
check out the full class in trac.  With the way it's done here I don't
have to have anything in the action which is how it was being done
before.

http://trac.symfony-project.org/browser/plugins/sfDoctrineUserPlugin/branches/1.2/modules/sfUserAdvancedUser/lib/form/sfUserAdvancedUserForm.class.php

The meat of it is in the two last protected functions.

--
Stephen Ostrow <[email protected]>

On Feb 16, 4:41 am, patter <[email protected]> wrote:
> Hi Stephen,
> yes I mailed you :-). I have used User just for example and my form is
> more complicated. Let say a UserObject have one FamilyObject and this
> FamilyObject have one or two ParentsObjects. So in UserForm is
> embedded FamilyForm with embedded FamilyForms (something like this -
> three levels of embedding)
>
> I have a solution , but I'm not sure if it is the best one.
>
> It is easy to unset an embedded form for the form class itself:
>
> unset($this->embeddedForms('formName');
>
> but because it is private property it is not possible from outside the
> form.
> I have created a new form class which extends the base sfForm and this
> class adds one public method - removeEmbedded($name).
> Now I can use:
>
> $embedded  = $form->getEmbeddedForms();
> $embedded['relations']->removeEmbedded($name);
>
> I do this in updateObject() because it is called after the form is
> validated and everything is o.k.
> If I do this in bind() method and the form is not valid it will not be
> shown properly .
>
> On Feb 15, 4:46 pm, jukea <[email protected]> wrote:
>
> > Hi patter,
>
> > What I'd do is unset the embedded form as if ot was any other field.
>
> > if($postedValues[..insert your input name...]=='')
> >    unset($subForm['embededFormName'])
>
> > Do this from anywhere before you bind the data. You could also
> > override the bind method in your form, unset the form there, and call
> > the parent method.
>
> > Julien
>
> > On Feb 11, 11:06 am, patter <[email protected]> wrote:
>
> > > Hello,
>
> > > I have a1:n relation: User have two phone numbers (well my real use
> > > case is a bit complicated :-) ).
>
> > > In my UserForm::configure() I have something like this:
>
> > > $p1 = $this->object['phones'][0] = new Phone();
> > > $p2 = $this->object['phones'][1] = new Phone();
>
> > > $subForm = new sfForm();
> > > $subForm->embedForm(0, new PhoneForm($p1 );
> > > $subForm->embedForm(1, new PhoneForm($p2));
>
> > > $this->embedForm('phones', $subForm);
>
> > > This works perfect. I can add a new User with 2 phones.
>
> > > The problem is that if the user doesn't provide information for second
> > > phone I should not insert a blank record (in fact I can't because of
> > > not null fields).
>
> > > I have read a lot of articles but I'm not able to find solution yet.
>
> > > I think that I have to use UpdateObject() method to remove unwanted
> > > relation, but if this is the better solution ?
>
> > > I use Doctrine :-)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"symfony users" 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/symfony-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to