7

I'm using Symfony 1.2 in a standard Propel form class.

public function configure()
{
    $this->setWidgets(array( 
'graduate_job_title' => new sfWidgetFormInput( array(), array( 'maxlength' => 80, 'size' => 30, 'value' => '' ) )
    ));
    //etc
}

However, I want the value of this field to come from the user information, which I'd normally access using $this->getUser()->getAttribute( '...' ). However, this doesn't seem to work in the form.

What should I be using?

j0k
  • 22,600
  • 28
  • 79
  • 90
James Inman
  • 1,030
  • 4
  • 15
  • 31

4 Answers4

14

It's a very bad idea to rely on the sfContext instance. It's better to pass what you need during sfForm initialization in the options array parameter.

http://www.symfony-project.org/api/1_4/sfForm

__contruct method

for example in your action:

$form = new myForm(null, 
                   array('attributeFoo' => 
                         $this->getUser()->getAttribute('attributeFoo'));

and then retrieve the value inside the form class:

$this->getOption('attributeFoo');

cirpo

cirpo
  • 902
  • 1
  • 9
  • 11
6

Does that work?

sfContext::getInstance()->getUser()->getAttribute('...');

// Edit : See cirpo's recommandation on the use of sfContext instead.

lpfavreau
  • 12,871
  • 5
  • 32
  • 36
1

If someone need the same in admin (backend) here is a solution: http://blog.nevalon.de/en/wie-nutze-ich-die-rechteverwaltung-in-symfony-admin-generator-formularen-20100729

Jérôme
  • 990
  • 1
  • 9
  • 14
-1

In Symfony 1.4, object $sf_user

wojtura
  • 39
  • 1
  • 2