簡體   English   中英

Sonata Admin捆綁類型集合定制

[英]Sonata Admin Bundle Type Collection Customisation

例如,我有3個實體:

  • 類別
  • 子目錄
  • 產品

在SonataAdminBundle中,我希望能夠在編輯子類別時編輯類別和產品時添加子類別。

按照這個想法,我創建了字段,但SonataAdminBundle開始與它們一起玩“Inception”。

當我打開類別I時,查看包含相關產品的相關子類別。

在這種情況下,如何切斷“產品”字段?

更新:

我的課程(簡化)如下所示:

// .../CoreBundle/Admin/CategoryAdmin.php
protected function configureFormFields(FormMapper $formMapper) {
    $formMapper
    ->add('name', null, array('required' => true))
    ->add('url', null, array('required' => true))
    ->add('subcategories', 'sonata_type_collection', array('by_reference' => true),     array(
  'edit' => 'inline',
  'sortable' => 'pos',
  'inline' => 'table',));
}


// .../CoreBundle/Admin/SubcategoriesAdmin.php
protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
            ->add('name', null, array('label' => 'name'))
            ->add('category_id', null, array('label' => 'Category'))
            ->add('url', null, array('label' => 'Url'))
            ->add('products', 'sonata_type_collection',
                  array('by_reference' => false),
                  array(
                       'edit' => 'inline',
                       'sortable' => 'pos',
                       'inline' => 'table',
                  ));
}

// .../CoreBundle/Admin/ProductsAdmin.php
protected function configureFormFields(FormMapper $formMapper) {
    $formMapper
            ->add('name', null, array('label' => 'Заголовок'))
            ->add('subcategory_id',  null, array('label' => 'Subcategory'));
}

架構看起來像這樣: 在此輸入圖像描述 在AdminBundle中它看起來像這樣: 在此輸入圖像描述

你為什么不嘗試這些方面的東西:

// .../CoreBundle/Admin/SubcategoriesAdmin.php
protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
            ->add('name', null, array('label' => 'name'))
            ->add('category_id', null, array('label' => 'Category'))
            ->add('url', null, array('label' => 'Url'));

    // only show the child form if this is not itself a child form
    if (!$formMapper->getFormBuilder()->getForm()->hasParent()) {
        $formmapper
            ->add('products', 'sonata_type_collection',
                  array('by_reference' => false),
                  array(
                       'edit' => 'inline',
                       'sortable' => 'pos',
                       'inline' => 'table',
                  ));
    }
}

@likeitlikeit給出的解決方案對symfony2.0不起作用。

不知何故,hasParent()總是返回false。

作為解決方法:

if (!is_numeric($formMapper->getFormBuilder()->getForm()->getName())) {}

集合中的名稱將是數字(0,1,2,...),而在單獨形式中它將是一個哈希。

暫無
暫無

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

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