Yeah. I realized that. I was planning on doing all the db updates
manually since it shouldn't be very complex. I'm not up to that
though. This is purely a sfForms thing I believe.

Thanks for the response though.

Any other direction would be helpful.

-- Stephen

On Oct 31, 3:48 pm, "Jonathan Wage" <[EMAIL PROTECTED]> wrote:
> Remember, the submitted values from the form are bound to the form, and then
> the values are passed to fromArray() on your Doctrine object. If you've used
> fromArray() before it is not a magic way to always update your object from
> an array of data. It isn't magically able to accept any form data and know
> what to do with it in your object. In your case you will need to do some
> manual work to update your object properly from the form->getValues().
>
> - Jon
>
> On Fri, Oct 31, 2008 at 2:39 PM, isleshocky77 <[EMAIL PROTECTED]>wrote:
>
>
>
>
>
> > With 1.2 around the corner I'm taking my first crack at the new form
> > system brought by the 1.1 release.  I need to make a form which is
> > essentially made up of a bunch of inner forms.
>
> > I'll post my schema at the bottom.  Basically I have a table of
> > Skills, just consist of a name, description and group the skill
> > belongs to.  Then I have a table named SkillReport which is just a
> > name and descrtiption, and finally a table named SkillPerson which
> > combines a skill_id, skill_report_id, sf_guard_user_id, and rating.
> > Basically ties everything together to keep track of a skill for a
> > given person in that report.
>
> > So I need to make a form which contains many SkillPerson's after going
> > around in circles of trying to make a single form object with a
> > skill_person[rating][0]  where 0 is the skill_id, I stumbled upon
> > embedForm.  Using this
> > I'm able to make my own form which embed multiple  SkillPeron forms.
> > {{{
> > #!php
> >    $Skills = Doctrine::getTable('Skill')->findAll();
> >    foreach ( $Skills as $Skill ) {
> >      $SkillPerson = new SkillPerson();
> >      $SkillPerson['skill_report_id'] = 1;
> >      $SkillPerson['sf_guard_user_id'] = 2;
> >      $SkillPerson['skill_id'] = $Skill['id'];
> >      $this->embedForm("rating[{$Skill['id']}]", new
> > SkillPersonForm($SkillPerson));
> >    }
> > }}}
> > It displays correctly but I'm having a hard time with the bind
> > function in my action and validation.  Validation is all over the
> > place.
>
> > It would be greatly helpful if someone could post an example of using
> > the embedForm functionality as well as validating it and using it's
> > values.  Below is the schema.yml, the SkillFillOutReportForm.class.php
> > (my custom form), and SkillPersonForm.clas.php (the modified generated
> > form, and my action.
>
> > Thanks for any help in advance.
>
> > {{{
> > #yml
> > #schema.yml
> > SkillGroup:
> >  columns:
> >    name: string
> >    description: string
>
> > Skill:
> >  columns:
> >    skill_group_id: integer
> >    name: string
> >    description: string
> >  relations:
> >    Group:
> >      class: SkillGroup
>
> > SkillReport:
> >  columns:
> >    name: string
> >    description: string
> >    date: timestamp
> >    deadline: timestamp
>
> > SkillPerson:
> >  columns:
> >    skill_id: integer
> >    sf_guard_user_id: integer(4)
> >    skill_report_id: integer
> >    rating: integer(2)
> >  relations:
> >    User:
> >      class: sfGuardUser
> >    Skill:
> >      class: Skill
> >    Report:
> >      class: SkillReport
> > }}}
>
> > {{{
> > #!php
> > //  SkillFillOutReportForm.class.php
> > class SkillFillOutReportForm extends sfForm
> > {
> >  public function setup()
> >  {
> >    $Skills = Doctrine::getTable('Skill')->findAll();
> >    foreach ( $Skills as $Skill ) {
> >      $SkillPerson = new SkillPerson();
> >      $SkillPerson['skill_report_id'] = 1;
> >      $SkillPerson['sf_guard_user_id'] = 2;
> >      $SkillPerson['skill_id'] = $Skill['id'];
> >      $this->embedForm("rating[{$Skill['id']}]", new
> > SkillPersonForm($SkillPerson));
> >    }
> >    $this->widgetSchema->setNameFormat('skill_person[%s]');
> >    $this->errorSchema = new sfValidatorErrorSchema($this-
> > >validatorSchema);
> >    parent::setup();
> >  }
> > }
> > }}}
>
> > {{{
> > #!php
> > // SkillPersonForm.class.php
> > class SkillPersonForm extends BaseSkillPersonForm
> > {
> >  public function configure()
> >  {
> >     unset($this['created_at'], $this['updated_at'], $this['slug']);
> >     $this->setWidgets(array(
> >     'sf_guard_user_id' => new sfWidgetFormInputHidden(),
> >     'skill_report_id'  => new sfWidgetFormInputHidden(),
> >     'rating'           => new sfWidgetFormChoice(array(
> >         'choices' => SkillPersonTable::getRatingChoices(),
> >         'expanded' => true))
> >     ));
> >     $this->setValidators(array(
> >      'sf_guard_user_id' => new
> > sfValidatorDoctrineChoice(array('model' => 'sfGuardUser', 'required'
> > => true)),
> >      'skill_report_id'  => new
> > sfValidatorDoctrineChoice(array('model' => 'SkillReport', 'required'
> > => true)),
> >      'rating'           => new sfValidatorChoice(array('choices' =>
> > array_keys(SkillPersonTable::getRatingChoices()))),
> >     ));
> >  }
> > }
> > }}}
>
> > {{{
> > #!php
> > //actions.class.php
> > public function executeFillOut($request)
> >  {
> >    $this->form = new SkillFillOutReportForm();
> >    if ($request->isMethod('post'))
> >    {
> >      $this->form->bind($request->getParameter('skill_person'));
> >      if ($this->form->isValid())
> >      {
> >        $values = $this->form->getValues();
> >      }
> >    }
> >  }
> > }}}
>
> --
> Jonathan H. Wage
> Open Source Software Developer & 
> Evangelisthttp://www.jwage.comhttp://www.doctrine-project.orghttp://www.symfony-project.org
--~--~---------~--~----~------------~-------~--~----~
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