Ok, im feeling quite stupid at the moment, and i blame the coffee for
it :P Was an easy fix, thnx for the hint :)
Here's what i did if anyone stumbles upon the same :
$user = Doctrine::getTable('sfGuardUser')->find($this-
>getUser()->getGuardUser()->id);
$this->form = new sfGuardUseProfileEditForm($user);
$this->profileform = new sfGuardUserProfileForm($user-
>profile);
if ($request->isMethod('post')) {
if ($this->hasRequestParameter('sf_guard_user')) {
$this->form->bind($this-
>getRequestParameter('sf_guard_user'));
if ($this->form->isValid()) {
$this->forward404Unless($this->form->save());
}
}
if ($this-
>hasRequestParameter('sf_guard_user_profile')) {
$this->profileform->bind($this-
>getRequestParameter('sf_guard_user_profile'));
if ($this->profileform->isValid()) {
$this->forward404Unless($this->profileform-
>save());
}
}
}
On 29 Юни, 11:16, Fabien Potencier <[EMAIL PROTECTED]
project.com> wrote:
> It can't work that way. When a user submit a form, it only submits 1
> form, not both. So, you need a way to determine which one has been
> posted and then only bind this one.
>
> Fabien
>
> --
> Fabien Potencier
> Sensio CEO - symfony lead developer
> sensiolabs.com | symfony-project.com | aide-de-camp.org
> Tél: +33 1 40 99 80 80
>
> sh1ny wrote:
> > Hello. I've run into some oddness ( or it's probably just me, doing
> > things wrong ), but i need a little advice on multiple forms with
> > 1.1 . The basic setup is 2 forms for user profile, in ajax tabs ( yui
> > tabs to be exact ). One form is for password change/email change, the
> > other form is profile - names, country, age etc. Everything worked
> > fine, untill i added this to the password form :
>
> > public function configure ()
> > {
> > $this->validatorSchema->setPostValidator(new
> > sfValidatorSchemaCompare('password', sfValidatorSchemaCompare::EQUAL,
> > 'password_repeat'));
> > }
>
> > to the password/email form.
> > The both use the same action and view to get rendered. The action
> > looks like this :
>
> > $user = Doctrine::getTable('sfGuardUser')->find($this-
> >> getUser()->getGuardUser()->id);
> > $this->form = new sfGuardUseProfileEditForm($user);
> > $this->profileform = new sfGuardUserProfileForm($user-
> >> profile);
> > if ($request->isMethod('post')) {
> > $this->form->bind($this-
> >> getRequestParameter('sf_guard_user'));
> > if ($this->form->isValid()) {
> > $this->forward404Unless($this->form->save());
> > }
> > $this->profileform->bind($this-
> >> getRequestParameter('sf_guard_user_profile'));
> > if ($this->profileform->isValid()) {
> > $this->forward404Unless($this->profileform-
> >> save());
> > }
> > }
>
> > and the view looks like this :
>
> > <?php use_helper('YUITabview'); ?>
>
> > <?php yui_tabview_start('demo') ?>
> > <div id="demo" class="yui-navset">
> > <ul class="yui-nav">
> > <li class="selected"><a href="#tab1"><em>Edit Password/Email</
> > em></a></li>
> > <li><a href="#tab2"><em>Edit Profile</em></a></li>
> > <li><a href="#tab3"><em>Edit Avatar</em></a></li>
> > </ul>
> > <div class="yui-content">
> > <div><p>
> > <?php if(!$sf_user->isAnonymous()): ?>
> > <form action="<?= url_for('user/index') ?>" method="POST">
> > <table>
> > <?php echo $form; ?>
> > </table>
> > <input type="submit" value="Submit" />
> > </form>
> > <?php endif; ?>
> > </p></div>
> > <div><p>
> > <?php if(!$sf_user->isAnonymous()): ?>
> > <form action="<?= url_for('user/index') ?>" method="POST">
> > <table>
> > <?php echo $profileform; ?>
> > </table>
> > <input type="submit" value="Submit" />
> > </form>
> > <?php endif; ?>
> > </p></div>
> > <div><p>To be done</p></div>
> > </div>
> > </div>
> > <?php yui_tabview_end('demo') ?>
>
> > Everything works fine without the postvalidator, for comparing the
> > inputted passwords, but with it, whenever you submit any of the forms,
> > the other one throws errors for all the required fields, complaining
> > that those fields are required. If still saves the data properly, just
> > the other form is basicly throwing out errors, when it shouldnt be.
>
> > Any advices on how i can handle this ? I could just separate the forms
> > in different actions, but i think that's not the point. Again,
> > everything works as expected without the postvalidator.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---