我有两个类:模板和模板参数。
以下是第一个代码:
<?php
namespace HPI\DisplayBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Template
*
* @ORM\Table(name="HPI_template")
* @ORM\Entity
*/
class Template
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="templatelabel", type="string", length=255)
*/
private $templatelabel;
/**
* @var string
*
* @ORM\Column(name="templatedescription", type="text")
*/
private $templatedescription;
/**
* @var string
*
* @ORM\Column(name="templatefile", type="string", length=255)
*/
private $templatefile;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set templatelabel
*
* @param string $templatelabel
* @return Template
*/
public function setTemplatelabel($templatelabel)
{
$this->templatelabel = $templatelabel;
return $this;
}
/**
* Get templatelabel
*
* @return string
*/
public function getTemplatelabel()
{
return $this->templatelabel;
}
/**
* Set templatedescription
*
* @param string $templatedescription
* @return Template
*/
public function setTemplatedescription($templatedescription)
{
$this->templatedescription = $templatedescription;
return $this;
}
/**
* Get templatedescription
*
* @return string
*/
public function getTemplatedescription()
{
return $this->templatedescription;
}
/**
* Set templatefile
*
* @param string $templatefile
* @return Template
*/
public function setTemplatefile($templatefile)
{
$this->templatefile = $templatefile;
return $this;
}
/**
* Get templatefile
*
* @return string
*/
public function getTemplatefile()
{
return $this->templatefile;
}
public function __toString() {
return $this->templatelabel;
}
}
以下是第二个代码:
namespace HPI\DisplayBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* TemplateParameters
*
* @ORM\Table(name="HPI_templateparameters")
* @ORM\Entity
*/
class TemplateParameters
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="parametername", type="string", length=255)
*/
private $parametername;
/**
*
* @ORM\ManyToOne(targetEntity="Template")
* @ORM\JoinColumn(nullable=false)
*/
private $template;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set parametername
*
* @param string $parametername
* @return TemplateParameters
*/
public function setParametername($parametername)
{
$this->parametername = $parametername;
return $this;
}
/**
* Get parametername
*
* @return string
*/
public function getParametername()
{
return $this->parametername;
}
/**
* Set template
*
* @param \HPI\DisplayBundle\Entity\Template $template
* @return TemplateParameters
*/
public function setTemplate(\HPI\DisplayBundle\Entity\Template $template)
{
$this->template = $template;
return $this;
}
/**
* Get template
*
* @return \HPI\DisplayBundle\Entity\Template
*/
public function getTemplate()
{
return $this->template;
}
}
正如您所注意到的,这两个类之间有很多关系
我在config.yml
中创建了相关服务sonata.admin.templateparameters:
class: HPI\AdminBundle\Models\TemplateParametersAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Marketing", label: "Template Parameters" }
arguments:
- ~
- HPI\DisplayBundle\Entity\TemplateParameters
- ~
当我想在奏鸣曲管理员中添加新参数时,直接使用模板参数管理员我没有遇到任何问题。但是,只要我想在模板管理员中将其添加为集合,我就会收到以下消息:当前字段parametername
未链接到管理员。请为目标实体创建一个:``
因为我提到我确信管理员已经存在,因为我可以直接使用它来使用它。有人有个主意吗?我在这里经历了几个主题,但我不清楚他们是如何解决这个问题的。
答案 0 :(得分:0)
我遇到了同样的问题并且通过为字段创建管理员来解决它,就像你为TemplateParametersAdmin所做的那样,并改变了$ formMapper,如下所示:
->add('sos', 'sonata_type_model',
[
'property' => 'title',
'multiple' => true,
'by_reference' => false,
'attr' => ['style' => 'width: 100%;']
]
)
“sonata_type_model”类型实际上有所不同。