Symfony - установить значение формы при сохранении - PullRequest
1 голос
/ 04 августа 2010

Быстрый вопрос. У меня есть форма Symfony. Когда я сохраняю форму, я хочу, чтобы мое поле create_by автоматически устанавливалось при сохранении.

Итак, я передаю идентификатор текущего пользователя в качестве опции в форме:

$this->form = new ContractForm(null,array("created_by"=>$this->getUser()->getId()));

А в методе настройки класса формы у меня есть:

$this->setDefault('created_by', $this->getOption("created_by"));

Если бы у меня был виджет create_by и я установил его скрытым, это бы отлично работало, однако я не хочу отображать поле, поскольку пользователь может легко манипулировать с помощью firebug или других инструментов.

Итак, мой вопрос к вам, как мне сохранить значение столбца, если поле не существует как виджет?

Ответы [ 3 ]

4 голосов
/ 04 августа 2010

Вам не нужно иметь виджет для этого, просто в методе configure вашего вызова формы.

<?php
$this->getObject()->setCreatedBy($this->getOption('created_by'));
?>

Нет необходимости перезаписывать метод.

Кроме того, чтобы это работало, вы должны инициировать свою форму следующим образом

<?php
$this->form = new ContractForm(new Contract(), array('created_by' => $this->getUser()->getId()));`
?>
0 голосов
/ 25 апреля 2014

Я предлагаю вам использовать это поведение в вашем классе sfDoctrineActAsSignablePlugin .

0 голосов
/ 16 апреля 2014

Или в вашем классе ContractForm вы можете добавить, чтобы настроить ()

$this->widgetSchema['created_by'] = new sfWidgetFormInputText(array('default' => $this->getUser()->getId()));
...