Я довольно новичок в Symfony и особенно в Sonata Admin. В моем проекте у меня есть объект Project, имеющий отношение OneToMany с объектом CommunicationDetails. Этот объект CommunicationDetails связан с объектом DataSource с отношением ManyToOne.
Источник данных - это третье приложение, которое мне нужно вызвать, чтобы получить информацию о проекте. Проект может быть связан со многими источниками данных. Каждое сообщение (project-datasource) нуждается в идентификаторе проекта project_datasource_id, который является идентификатором проекта в стороннем приложении.
/**
* @ORM\Table(name="project")
* @ORM\Entity
*/
class Project {
...
/**
* @ORM\OneToMany(targetEntity="CommunicationDetails", mappedBy="project", cascade={"persist"}, indexBy="project")
*/
private $details;
}
/**
* @ORM\Table(name="communication_details")
* @ORM\Entity;
*/
class CommunicationDetails {
...
/**
* @ORM\ManyToOne(targetEntity="Project", inversedBy="details")
*/
private $project;
}
/**
* @ORM\Table(name="datasource")
* @ORM\Entity
*/
class DataSource{
...
/**
* @ORM\OneToMany(targetEntity="CommunicationDetails", mappedBy="dataSource", cascade={"persist"}, indexBy="dataSource")
*/
private $details;
У меня нет проблем, чтобы управлять этим поведением с помощью Sonata, но я бы хотел немного улучшить процесс создания.
Я хотел бы предоставить поля сущности CommunicatonDetails при создании проекта. На самом деле, я ищу что-то вроде этого (даже если я знаю, что я не могу сделать это таким образом):
$mapper
->with('General', ['class' => 'col-md-4'])
->add('name', TextType::class)
->add('description', TextareaType::class)
// Here, I'd like to provide fields of the CommunicationDetails entity to create these objects in the same time
->add('details.project_datasource_id', TextType::class)
->add('details.basePath', TextType::class)
->end();
Я прочитал много статей, касающихся Sonata и ее CRUDController, и я думаю, что должен реализовать это таким образом. Однако я не нашел, как это сделать. Я взглянул на базовый шаблон сонаты, который мне тоже придется переопределить, но каждый отображаемый элемент формы связан с моей моделью, поэтому я не представляю, как добавить свои собственные поля.
Если у кого-то есть какая-либо ссылка или идея, я был бы очень благодарен!
PS: я сделал все возможное, извините за мои ошибки в английском.