たとえば、次の 3 つのエンティティがあります。
- カテゴリー
- サブカテゴリ
- 製品
SonataAdminBundle では、Subcategory の編集中に Category と Products の編集中に Subcategory を追加できるようにしたいと考えています。
このアイデアに従ってフィールドを作成しましたが、SonataAdminBundle はそれらで "Inception" を再生し始めます。
カテゴリを開くと、関連する製品を含む関連するサブカテゴリが表示されます。
この場合、「製品」フィールドを切り捨てるにはどうすればよいですか?
アップデート:
私のクラス(簡略化)は次のようになります。
// .../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 では次のようになります。