I have this two tables (see pics below) mapped as follow:
class Brand
{
...
/**
* @var Company
*
* @ORM\ManyToOne(targetEntity="Company")
* @ORM\JoinColumn(name="companies_id", referencedColumnName="id")
*/
protected $company;
}
class Company
{
...
}
I have two admin classes: CompanyAdmin
and BrandAdmin
. I need to add support for add a new brand - create a new brand not link a existent one - from company admin but I have not idea in how to achieve this. The idea is:
I was reading sonata docs but EMBEDDING OTHER ADMINS section is not ready yet. Can any help me to get this done? I am stucked
I didn't fully understand your request, but from what I understood :
To create / select / delete company from brand
class BrandAdmin extends Admin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper->add('company', 'sonata_type_model_list', array(
'by_reference' => false
));
}
}
Documentation: https://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/form_field_definition.html#advanced-usage-many-to-one
Add new brands in Company form
class CompanyAdmin extends Admin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper->add('brands', 'sonata_type_collection',
array(
'label' => false,
'by_reference' => false
),
array(
'edit' => 'inline',
'inline' => 'table'
)
);
}
}
The fields displayed to create a new brand will be based on the configureFormFields of BrandAdmin.
Documentation : https://sonata-project.org/bundles/admin/master/doc/reference/form_types.html#sonata-type-collection