【发布时间】:2021-08-28 12:00:23
【问题描述】:
我正在使用 Ez-Extends 来扩展 Sonata Classification Bundle 的 Category 实体。
现在我想使用Knp\DoctrineBehaviors\Model\Translatable\TranslatableTrait 使我的类别可翻译。我在我的 Category 类中应用了这个特征,并让它实现了 TranslatableInterface。然后我创建一个新的 CategoryTranslation 类:
<?php
namespace App\Application\Sonata\ClassificationBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Contract\Entity\TranslationInterface;
use Knp\DoctrineBehaviors\Model\Translatable\TranslationTrait;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity
*/
class CategoryTranslation implements TranslationInterface
{
use TranslationTrait;
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var string | null
* @ORM\Column(type="string")
* @Groups("filter")
*/
private $name;
private $trans;
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @param mixed $id
* @return CategoryTranslation
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* @return string|null
*/
public function getName(): ?string
{
return $this->name;
}
/**
* @param string|null $name
* @return CategoryTranslation
*/
public function setName(?string $name): CategoryTranslation
{
$this->name = $name;
return $this;
}
/**
* @return mixed
*/
public function getTrans()
{
return $this->trans;
}
/**
* @param mixed $trans
* @return CategoryTranslation
*/
public function setTrans($trans)
{
$this->trans = $trans;
return $this;
}
}
但是,当我尝试在应用程序中执行任何操作时,我现在会收到以下消息:
In MappingException.php line 65:
No mapping file found named 'CategoryTranslation.orm.xml' for class 'App\Application\Sonata\ClassificationBundle\E
ntity\CategoryTranslation'.
据我所知,这个新实体应该使用注解进行映射,而不是 XML。我做错了什么?
编辑:这是我的教义.yaml 文件的内容:
parameters:
# Adds a fallback DATABASE_URL if the env var is not set.
# This allows you to run cache:warmup even if your
# environment variables are not available yet.
# You should not need to change this value.
env(DATABASE_URL): ''
doctrine:
dbal:
# configure these for your database server
driver: 'pdo_mysql'
server_version: '5.6'
charset: utf8
# With Symfony 3.3, remove the `resolve:` prefix
url: '%env(resolve:DATABASE_URL)%'
types:
json: Sonata\Doctrine\Types\JsonType
orm:
auto_generate_proxy_classes: '%kernel.debug%'
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
SonataMediaBundle: ~
ApplicationSonataMediaBundle: ~
metadata_cache_driver: array
result_cache_driver: array
query_cache_driver: array
【问题讨论】:
-
看起来mapping configuration 使用了错误的类型。您的
config/目录中是否有文件doctrine.yaml,或者您可以在配置中搜索教义部分并显示它吗?您也可以尝试bin/console debug:config doctrine找出实际配置 -
@dbrumann 感谢您的评论。我已将
doctrine.yaml的内容添加到问题中。
标签: php symfony doctrine translation sonata