Hi

I just ran into the same problem, and while I found the solution in
this discussion, I think it is not clear enough, so let me repeat
briefly, in case anyone comes across this in the future:

like Richtermeister says, the problem can be solved by adding a
_uniques key to the schema, and using the auto-generated from. If you
do not want to do this, for some reason, you need to add the primary
key of the model to the from as a hidden field, if you are using it
for update actions, like this:

    $this->setWidgetSchema(
      new sfWidgetFormSchema(
        array(
          "id" => new sfWidgetFormInputHidden(),
          ...
        )
      )
    );

and:

    $this->setValidators(
      array(
        "id" => new sfValidatorPropelChoice( array( "model" =>
"Member", "column" => "id", "required" => false ) ),
      )
    );

so basically you are passing the primary key as a hidden value. This
seems odd, because the form will know the difference between insert
and update and behave correctly without doing this, yet somehow the
sfValidatorPropelUnique doesn't.

best wishes

Stefan


> On Sep 12, 7:09 pm, Richtermeister <nex...@gmail.com> wrote:
>
> > Hey Ben,
>
> > no, your first version is right. You only need to pass model and
> > column.
> > The object that your form is updating needs to have a primary key set
> > though, in order to be considered anupdate. otherwise it will be
> > considered new and theupdatewill fail.
>
> > In the most basic propel form setup none of this should be an issue,
> > since auto-generated forms are doing this just fine by themselves. Try
> > adding a _uniques: key to the schema and add your field there, this
> > will build the post validator straight into your base form.
>
> > Or post your entire configure/setup function if nothing else helps :)
>
> > Have a great day,
> > Daniel
> > > > > On Mar 11, 3:50 am, Benjamin <agtle...@gmail.com> wrote:
>
> > > > > > The code is below.  I have been searching for hours.  This is 
> > > > > > failing
> > > > > > on updates, saying that the user name has already been taken.  It's
> > > > > > being used as a post validator.
>
> > > > > > newsfValidatorPropelUnique(
> > > > > >     array(
> > > > > >         'model'         => 'Members',
> > > > > >         'column'        => array('user_name'),
> > > > > >     ),
> > > > > >     array(
> > > > > >         'invalid'       => 'This user name has already been taken',
> > > > > >     )),

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"symfony users" group.
To post to this group, send email to symfony-users@googlegroups.com
To unsubscribe from this group, send email to 
symfony-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/symfony-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to