2012-05-11 291 views
17

我怎樣才能設置在奏管理員束 缺省值的數據選項在configureFormFields方法缺少設置默認值

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->add('name', null, array('required' => true, 'data' => "my default value")) 
    ; 
} 

如何使用數據屬性來設置內部字段默認值Δα ?

+0

什麼是fieldType的名稱? – Amit

回答

41

我猜你可能已經通過,現在解決了這個,但給任何人一個參考,你可以覆蓋getNewInstance()方法,在對象上設置的默認值:

public function getNewInstance() 
{ 
    $instance = parent::getNewInstance(); 
    $instance->setName('my default value'); 

    return $instance; 
} 
+0

正是我在找的東西。謝謝! – Matheno

+0

@RobMasters如果我們需要顯示的屬性實際上是一種方法,該怎麼辦? – smarber

4

你也可以默認值分配給直接的實體的屬性:

class TheEntity 
{ 
    private $name = 'default name'; 
} 
+0

爲什麼這個答案被否決?它的工作原理和涉及供應商代碼的重要性最低。最佳答案imho。 – FallenSquirrel

+0

@FallenSquirrel它的工作,但我認爲這不是理想的解決方案,因爲OP可能想要在索納塔完成解決方案,並且不想觸摸類屬性 – GusDeCooL

5

除了@RobMasters解決方案:

如果你想設置的關係,你可以從恩參考titymanager(而不是完整的對象):

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/

+0

那麼如果11不能被硬編碼? – aderuwe

+0

標識符在哪裏響應。 「11」從何而來? – webDEVILopers

+0

是的,我的問題確切。 – aderuwe

0

對於布爾型,另一種選擇是傳遞給你的add方法的第一個陣列內設置data值的configureFormFields

裏面的一些memtoring後所以,我的代碼(我想已經默認選中複選框)結束了看起來像這樣:

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->add('name') 
     ->add('visible', null, ['label'=>'Visibility', 'data' => true ]) 
    ; 
} 

......它在我的文件頂部保存了幾行文字,因爲我可以擺脫getNewInstance()定義。