1

簡単な質問。私はsymfonyフォームを持っています。フォームを保存するときに、created_byフィールドを保存時に自動的に設定する必要があります。

したがって、現在のユーザーIDをオプションとして次の形式で渡します。

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

そして、フォームクラスのconfigureメソッドには次のものがあります。

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

created_byウィジェットがあり、それを非表示に設定した場合、これはうまく機能しますが、ユーザーがFirebugや他のツールを使用して簡単に操作できるため、フィールドを表示したくありません。

では、フィールドがウィジェットとして存在しない場合、列の値を保存するにはどうすればよいですか?

4

3 に答える 3

4

フォーム呼び出しのconfigureメソッドだけで、このためのウィジェットを用意する必要はありません。

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

メソッドを上書きする必要はありません。

また、これが機能するためには、このようにフォームを開始する必要があります

<?php
$this->form = new ContractForm(new Contract(), array('created_by' => $this->getUser()->getId()));`
?>
于 2010-08-04T11:29:50.960 に答える
0

または、ContractFormクラスでconfigure()に追加できます

$this->widgetSchema['created_by'] = new sfWidgetFormInputText(array('default' => $this->getUser()->getId()));
于 2014-04-16T07:15:11.303 に答える
0

この動作をクラスsfDoctrineActAsSignablePluginで使用できることをお勧めします。

于 2014-04-25T08:33:59.097 に答える