簡體   English   中英

Symfony Media捆綁軟件-“無法在null變量上調用方法(“ id”)。”

[英]Symfony Media bundle - “Impossible to invoke a method (”id“) on a null variable.”

環境

Symfony 3.4.4 + FOSBundleUser + Sonata Admin +媒體捆綁

學科

我已經安裝了媒體捆綁包。 我已經按照官方文檔中指定的步驟進行了配置。

我在實體產品中創建了一個字段,以附加PDF格式的目錄。

我已經在Sonata Adminel字段映射中添加了。

在Sonata Admin中查看產品列表時,沒有問題,但是在輸入以編輯或創建新產品時,出現以下錯誤:

無法對空變量調用方法(“ id”)。

這是在我的實體中附加PDF的字段定義

/**
 * @var Media
 *
 * @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media")
 * @ORM\JoinColumns({
 *     @ORM\JoinColumn(name="fileCatalog_id", referencedColumnName="id")
 * })
 */
private $fileCatalog;

這是Sonata Admin表單中字段的映射

->add('fileCatalog', 'sonata_type_model_list', array(
                    'required' => false,
                    'label'=>'Imagen Español'
                ), array(
                        'link_parameters' => array(
                            'context' => 'default',
                            'provider' => 'sonata.media.provider.file',
                            'empty_on_new' => true,
                        )
                    )
                )

我遇到了同樣的問題,但就我而言,我的項目是針對多語言站點的,因此每個實體都有其支持的翻譯實體(使用Knp \\ DoctrineBehaviors),所以我所做的是。.我保持媒體映射(ORM)處於打開狀態例如,兩個站點都假定Product和ProductTranslation,

namespace Website\ProductBundle\Entity;

use Knp\DoctrineBehaviors\Model as ORMBehaviors;

class Product implements TranslatableInterface
{

     use ORMBehaviors\Translatable\Translatable;

     ......
     ......

     /**
      * @var Media
      *
      * @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media",  cascade={"persist"}, fetch="LAZY")
      * @ORM\JoinColumn(referencedColumnName="id", onDelete="SET NULL", nullable=true)
      */
      protected $image;
}

namespace Website\ProductBundle\Entity;

use Knp\DoctrineBehaviors\Model as ORMBehaviors;

class ProductTranslation
{

     use ORMBehaviors\Translatable\Translation;

     ......
     ......

     /**
      * @var Media
      *
      * @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media",  cascade={"persist"}, fetch="LAZY")
      * @ORM\JoinColumn(referencedColumnName="id", onDelete="SET NULL", nullable=true)
      */
      protected $image;
}

這就是我所能解決的所有問題。 而且效果很好。

就我而言,我錯過了將ORM導入Media實體類的過程。

use Doctrine\ORM\Mapping as ORM;

這就是所有需要解決的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM