簡體   English   中英

Symfony 3-Sonata管理員捆綁包-當從另一個實體添加時,configureFormFields禁用字段

[英]Symfony 3 - Sonata Admin Bundle - configureFormFields disable fields when added from another entity

我有2個實體。 公司和商店。

當我添加公司時,我也可以添加商店。 我的問題是,在公司實體上添加此內容時,我不想在表單上看到字段“公司”。

僅當我直接在“商店添加”上方添加商店時,才應顯示“公司”字段。

在公司實體上添加商店時,是否可以刪除或禁用此字段?

非常感謝。

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',
        ))
    ;
}

好的,因此您可以在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',
        ))
    ;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM