I just realized that I made a mistake on that last one.  The
constructor I used was for sfForm.

you can do:
public function __consutrct($user,$object,$defaults = array(),
$CSRFSecret = null){
  $this->currentUser = $user;
  parent::__construct($object,$defaults,$CSRFSecret);
}

You could also relate the items before hand in the action or something
and pass it to the form

$mem = new Member();
$mem->user_id = $user->id;//where you get user from is up to you
$form = new MemberForm($mem);//this will set the object for the form
to be the member obj. you just created.

Using the second approach, I don't think that you would have to alter
the form at all, but that depends on you app.

HTH,
Casey

On May 5, 11:49 am, Casey <casey.cam...@gmail.com> wrote:
> So using the context object is the easiest way, but you could
> definitely add dependency injection, it just take a little more code.
> However, and I'm not certain on this, but you should be able to unit
> test this as the sfContext object is available during testing.  I
> think the idea is that if you had different objects that represented
> users, you couldn't test each one.  Like the example from your link,
> it is talking about using different storage methods, for each of which
> there is a specific class.  If that data was pulled from the context
> it would be hard to test each individual type of storage without
> writing a separate test for each.
>
> Since I normally find myself only using the integrated user with
> symfony or an object from the DB, I don't really bother with DI,
> unless I think I will be acting on a user other than the one who
> requested the page.  In that case I would add a user member to the
> form class and pass the user to the constructor.
>
> This is what I would do:
>
> private $currentUser;
>
> public function __construct($user,$defaults = array(), $CSRFSecret =
> null){
>   $this->currentUser = $user;
>   parent::__construct($defaults,$CSRFSecret);
>
> }
>
> public function configure(){
>    parent::configure();
>    if(!is_null($this->currentUser)){
>         $this->getObject()->user_id = $this->currentUser->id;
>    }else throw new Exception('You must supply a valid user object);
>
> }
>
> HTH,
> Casey
>
> On May 5, 12:54 am, Sela Yair <tzi...@gmail.com> wrote:
>
>
>
>
>
> > one concern related to your solution is something i read about Dependency
> > injectionhttp://fabien.potencier.org/article/11/what-is-dependency-injectionbyusing
> > the sfContext i think i would eliminate using unit testing as the configure
> > method isn't independent any longer.
> > am I right?
>
> > On 4 May 2010 23:58, Sela Yair <tzi...@gmail.com> wrote:
>
> > > thanks, that what i was after.
>
> > > On 4 May 2010 18:27, Casey <casey.cam...@gmail.com> wrote:
>
> > >> Doctrine make this easier.  The way you are doing it works, but it may
> > >> be harder to maintain in the future.  I would reccommend something
> > >> like this:
>
> > >> MemberForm.class.php::
> > >> function configure(){
> > >>   parent::configure();
> > >>   $this->getObject()->user_id = sfContext::getInstance()->getUser()-
> > >> >getGuardUser()->id;
> > >> }
>
> > >> When this form saves it will save the Member object with the current
> > >> users user_id.  It is best to keep this kind of logic in the form,
> > >> specifically the configure() method, it will be much easier in the
> > >> future if you perform as little logic as possible in the action or the
> > >> view.
>
> > >> HTH,
> > >> Casey
>
> > >> On May 4, 4:27 am, Sela Yair <tzi...@gmail.com> wrote:
> > >> > I think I found slick solution, would like to get some feedback if
> > >> that's
> > >> > the ideal solution.
>
> > >> > in action.class.php
>
> > >> > i modified the $form->bind
>
> > >> >  *protected function processForm(sfWebRequest $request, sfForm $form)*
> > >> > *  {*
> > >> > *    $formData = $request->getParameter($form->getName());*
> > >> > *    $formData['user_id'] = $this->getUser()->getGuardUser()->getId();*
> > >> > *    $form->bind($formData, $request->getFiles($form->getName()));*
> > >> > *    if ($form->isValid())*
> > >> > *    {*
>
> > >> > On 4 May 2010 10:50, Sela Yair <tzi...@gmail.com> wrote:
>
> > >> > > Thanks.
> > >> > > Yes that's what I'm after.
>
> > >> > > the following is the table in schema.yml
> > >> > > Member:
> > >> > >   actAs:
> > >> > >     Timestampable: ~
> > >> > >   columns:
> > >> > >     date_birth:
> > >> > >       type: date
> > >> > >       notnull: true
> > >> > >     logo:
> > >> > >       type: string(255)
> > >> > >     is_public:
> > >> > >       type: boolean
> > >> > >       notnull:  true
> > >> > >       default:  1
> > >> > >     is_activated:
> > >> > >       type: boolean
> > >> > >       notnull:  true
> > >> > >       default:  0
> > >> > >     country_id:
> > >> > >       type: string(2)
> > >> > >     user_id:
> > >> > >       type: integer(4)
> > >> > >   relations:
> > >> > >     sfGuardUser: { foreign: id, local: user_id, onDelete: cascade }
>
> > >> > > Someone can insert its details only if s/he's registered, and i want
> > >> the
> > >> > > user_id to be populated with the current user id. i managed to do it
> > >> by
> > >> > > updating a property in the lib/model and when using Save method
> > >> changing
> > >> > > this column, but i believe there's more elegant way to do it.
>
> > >> > > On 4 May 2010 10:09, Tom Ptacnik <to...@tomor.cz> wrote:
>
> > >> > >> Yes you can do a relation between a user and another table object. 
> > >> > >> Is
> > >> > >> that what you want?
> > >> > >> Please describe you question again..
>
> > >> > >> On 3 kvě, 14:37, Sela <tzi...@gmail.com> wrote:
> > >> > >> > I want to associate a table with the user ID generated from
> > >> > >> > sfDoctrineGuardPlugin when the user is logged in. I thought to do
> > >> it
> > >> > >> > in save() but not sure how to get the userID at that point as it's
> > >> in
> > >> > >> > lib/model/doctrine and in the plugin readme they explain how to 
> > >> > >> > get
> > >> > >> > the value only from the template or the action.
>
> > >> > >> > --
> > >> > >> > If you want to report a vulnerability issue on symfony, please 
> > >> > >> > send
> > >> it
> > >> > >> to security at symfony-project.com
>
> > >> > >> > 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<symfony-users%2bunsubscr...@goog
> > >> > >> >  legroups.com>
> > >> <symfony-users%2bunsubscr...@goog legroups.com>
> > >> > >> > For more options, visit this group athttp://
> > >> > >> groups.google.com/group/symfony-users?hl=en
>
> > >> > >> --
> > >> > >> If you want to report a vulnerability issue on symfony, please send
> > >> it to
> > >> > >> security at symfony-project.com
>
> > >> > >> 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<symfony-users%2bunsubscr...@goog
> > >> > >>  legroups.com>
> > >> <symfony-users%2bunsubscr...@goog legroups.com>
> > >> > >> For more options, visit this group at
> > >> > >>http://groups.google.com/group/symfony-users?hl=en
>
> > >> > --
> > >> > If you want to report a vulnerability issue on symfony, please send it
> > >> to security at symfony-project.com
>
> > >> > 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<symfony-users%2bunsubscr...@goog
> > >> >  legroups.com>
> > >> > For more options, visit this group athttp://
> > >> groups.google.com/group/symfony-users?hl=en
>
> > >> --
> > >> If you want to report a vulnerability issue on symfony, please send it to
> > >> security at symfony-project.com
>
> > >> 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<symfony-users%2bunsubscr...@goog
> > >>  legroups.com>
> > >> For more options, visit this group at
> > >>http://groups.google.com/group/symfony-users?hl=en
>
> > --
> > If you want to report a vulnerability issue on symfony, please send it to 
> > security at symfony-project.com
>
> > 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 
> > athttp://groups.google.com/group/symfony-users?hl=en
>
> --
> If you want to report a vulnerability issue on symfony, please send it to 
> security at symfony-project.com
>
> 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 
> athttp://groups.google.com/group/symfony-users?hl=en

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

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