2017-02-06 51 views
0

我有2個實體。 公司和商店。Symfony 3 - Sonata Admin Bundle - configureFormFields在從其他實體添加時禁用字段

當我添加一家公司時,我也可以添加一家商店。 我的問題是,當將這添加到公司實體上時,我不想在表單上看到「公司」字段。

'公司'字段只應顯示在我直接在'商店添加'上添加商店時顯示。

是否有可能在公司實體上添加存儲時刪除或禁用此字段?

非常感謝。

UPDATE

這是我ClientAdmin.php

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->add('name', null, array(
      'label' => 'Name' 
     )) 
     ->add('email', 'email', array(
      'label' => 'E-Mail' 
     )) 
     ->add('street', null, array(
      'label' => 'Straße' 
     )) 
     ->add('streetno', null, array(
      'label' => 'Haus Nr.' 
     )) 
     ->add('city', null, array(
      'label' => 'Ort' 
     )) 
     ->add('zip', null, array(
      'label' => 'PLZ' 
     )) 
     ->add('stores', 'sonata_type_model', array(
      'multiple' => true, 
      'by_reference' => false, 
      'class' => 'StoreBundle\Entity\Store', 
      'label' => 'Filialen', 
     )) 
    ; 
} 

這是我StoreAdmin.php

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->add('name', null, array(
      'label' => 'Name', 
     )) 
     ->add('number', null, array(
      'label' => 'Nummer', 
     )) 
     ->add('street', null, array(
      'label' => 'Straße', 
     )) 
     ->add('streetno', null, array(
      'label' => 'Haus Nr.', 
     )) 
     ->add('zip', null, array(
      'label' => 'PLZ', 
     )) 
     ->add('city', null, array(
      'label' => 'Stadt', 
     )) 
     ->add('email', null, array(
      'label' => 'E-Mail', 
      'required' => false, 
     )) 
     ->add('client', 'sonata_type_model', array(
      'required' => false, 
      'multiple' => false, 
      'by_reference' => false, 
      'class' => 'ifabrik\ClientBundle\Entity\Client', 
      'label' => 'Unternehmen', 
     )) 
     ->add('editor', 'sonata_type_model', array(
      'required' => false, 
      'multiple' => false, 
      'by_reference' => false, 
      'class' => 'UserBundle\Entity\User', 
      'label' => 'Bearbeiter', 
     )) 
    ; 
} 
+0

你可以分享你2個實體configureFormField請 – pbenard

+0

@pbenard做:) – cRsakaWolf

回答

0

好了,所以在你storeAdmin你可以檢查,如果你已經有一個客戶端以便呈現客戶端字段。

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $subject = $this->getSubject(); 
    $isNew = null === $subject->getClient(); 

    $formMapper 
     ->add('name', null, array(
      'label' => 'Name', 
     )) 
     ->add('number', null, array(
      'label' => 'Nummer', 
     )) 
     ->add('street', null, array(
      'label' => 'Straße', 
     )) 
     ->add('streetno', null, array(
      'label' => 'Haus Nr.', 
     )) 
     ->add('zip', null, array(
      'label' => 'PLZ', 
     )) 
     ->add('city', null, array(
      'label' => 'Stadt', 
     )) 
     ->add('email', null, array(
      'label' => 'E-Mail', 
      'required' => false, 
     )); 
    if ($isNew) { 
     $formMapper 
     ->add('client', 'sonata_type_model', array(
      'required' => false, 
      'multiple' => false, 
      'by_reference' => false, 
      'class' => 'ifabrik\ClientBundle\Entity\Client', 
      'label' => 'Unternehmen', 
     )); 
    } 
    $formMapper 
     ->add('editor', 'sonata_type_model', array(
      'required' => false, 
      'multiple' => false, 
      'by_reference' => false, 
      'class' => 'UserBundle\Entity\User', 
      'label' => 'Bearbeiter', 
     )) 
    ; 
} 
+0

但如果我真的有什麼新的? 奏鳴曲是否將客戶送到新店? – cRsakaWolf

+0

如果你有一個新的,所以get客戶端爲空,所以字段被渲染。 – pbenard

+0

我會盡力:)謝謝你 – cRsakaWolf

相關問題