ソナタ管理バンドルでデフォルト値を設定するにはどうすればよいですか?configureFormFieldsメソッドにデータオプションがありません
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name', null, array('required' => true, 'data' => "my default value"))
;
}
データ属性を使用してフィールド内にデフォルト値を設定するにはどうすればよいですか?
おそらくこれまでにすでに解決していると思いますが、他の人への参照として、getNewInstance()メソッドをオーバーライドし、オブジェクトにデフォルト値を設定できます。
public function getNewInstance()
{
$instance = parent::getNewInstance();
$instance->setName('my default value');
return $instance;
}
エンティティのプロパティにデフォルト値を直接割り当てることもできます。
class TheEntity
{
private $name = 'default name';
}
@RobMastersソリューションに加えて:
リレーションを設定する場合は、(完全なオブジェクトではなく)entitymanagerから参照を取得できます。
public function getNewInstance()
{
$instance = parent::getNewInstance();
if ($this->hasRequest()) {
$branch = $this->getRequest()->get('branch', null);
if ($branch !== null) {
$entityManager = $this->getModelManager()->getEntityManager('MyBundle\Entity\Branch');
$branchReference = $entityManager->getReference('MyBundle\Entity\Branch', $branch);
$instance->setBranch($branchReference);
}
}
return $instance;
}
ブログに例を追加しました: http://blog.webdevilopers.net/populate-resp-set-default-values-on-form-resp-object-or-instance-in-sonataadminbundle/ ==
ブール値の場合、別のオプションは、data
メソッドに渡される最初の配列内のadd
値をconfigureFormFields
内に設定することです。
したがって、いくつかの記憶の後、私のコード(デフォルトでチェックしたかったチェックボックスのコード)は次のようになりました。
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name')
->add('visible', null, ['label'=>'Visibility', 'data' => true ])
;
}
... getNewInstance()定義を削除できるため、ファイルの先頭に数行保存されました。