Symfony: How to hide form fields from display and then set values for them in the action class

Posted by Tom on Stack Overflow See other posts from Stack Overflow or by Tom
Published on 2010-05-19T13:12:35Z Indexed on 2010/12/29 3:54 UTC
Read the original article Hit count: 280

Filed under:
|
|
|
|

I am fairly new to symfony and I have 2 fields relating to my table "Pages"; created_by and updated_by. These are related to the users table (sfGuardUser) as foreign keys. I want these to be hidden from the edit/new forms so I have set up the generator.yml file to not display these fields:

form:
  display:
    General: [name, template_id]
    Meta: [meta_title, meta_description, meta_keywords]

Now I need to set the fields on the save. I have been searching for how to do this all day and tried a hundred methods. The method I have got working is this, in the actions class:

protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form_params = $request->getParameter($form->getName());
    $form_params['updated_by'] = $this->getUser()->getGuardUser()->getId();
    if ($form->getObject()->isNew()) $form_params['created_by'] = $this->getUser()->getGuardUser()->getId();

    $form->bind($form_params, $request->getFiles($form->getName()));

So this works. But I get the feeling that ideally I shouldnt be modifying the web request, but instead modifying the form/object directly. However I havent had any success with things like:

$form->getObject()->setUpdatedBy($this->getUser()->getGuardUser());

If anyone could offer any advice on the best ways about solving this type of problem I would be very grateful.

Thanks, Tom

© Stack Overflow or respective owner

Related posts about forms

Related posts about symfony