2009-03-09 2 views
7

Я использую Symfony 1.2 в стандартном классе формы Propel.Как получить пользовательские данные в форме в Symfony 1.2?

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

Однако, я хочу, чтобы значение этого поля исходить от информации о пользователе, который я обычно доступ с помощью $this->getUser()->getAttribute('...'). Однако, похоже, это не работает в форме.

Что я должен использовать?

ответ

6

Это работает?

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

// Edit: См recommandation cirpo по использованию sfContext вместо этого.

+0

Works, спасибо! –

+0

Спасибо, это работает – Nordes

14

Это очень плохая идея полагаться на экземпляр sfContext. Лучше передать то, что вам нужно во время инициализации sfForm в параметре array.

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

метод __contruct

, например, в вашем действии:

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

и затем извлечь значение внутри класса формы:

$ this-> getOption ('attributeFoo');

cirpo

+1

Что делать, если вы используете плагин типа sfDoctrineGuard, который автоматически генерирует формы? Я непосредственно не создаю формы в своих классах. – codecowboy

+0

Это то, что я искал. Благодаря! В моем случае это работает с Symfony 1.4 –