Sonata Admin - 当前字段未链接到管理员

时间:2014-04-08 21:46:33

标签: symfony sonata-admin

我有两个类:模板和模板参数。

以下是第一个代码:

<?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未链接到管理员。请为目标实体创建一个:``

因为我提到我确信管理员已经存在,因为我可以直接使用它来使用它。有人有个主意吗?我在这里经历了几个主题,但我不清楚他们是如何解决这个问题的。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题并且通过为字段创建管理员来解决它,就像你为TemplateParametersAdmin所做的那样,并改变了$ formMapper,如下所示:

->add('sos', 'sonata_type_model',
    [
    'property' => 'title',
    'multiple' => true,
    'by_reference' => false,
    'attr' => ['style' => 'width: 100%;']
    ]
)

“sonata_type_model”类型实际上有所不同。