Orm 使用JMSSerialize序列化遵循SimplifiedYamlDriver约定的Doctrine2实体

Orm 使用JMSSerialize序列化遵循SimplifiedYamlDriver约定的Doctrine2实体,orm,doctrine-orm,doctrine,jmsserializerbundle,Orm,Doctrine Orm,Doctrine,Jmsserializerbundle,symfony赞助的project\Doctrine\ORM\Mapping\Driver\SimplifiedYamlDriver在我的项目中非常有用,可以保持实体文件名干净简单。但是,JMSSerialize假定每个实体的命名约定都是完全限定的命名空间。在Doctrine2配置中使用\doctor\ORM\Mapping\Driver\SimplifiedYamlDriver时,情况并非如此 () 是否使用了addMetadataDir的第二个参数 从JMS\Serializer\Seria

symfony赞助的project\Doctrine\ORM\Mapping\Driver\SimplifiedYamlDriver在我的项目中非常有用,可以保持实体文件名干净简单。但是,JMSSerialize假定每个实体的命名约定都是完全限定的命名空间。在Doctrine2配置中使用\doctor\ORM\Mapping\Driver\SimplifiedYamlDriver时,情况并非如此

()


是否使用了
addMetadataDir
的第二个参数

JMS\Serializer\SerializerBuilder.php

/**
 * Adds a directory where the serializer will look for class metadata.
 *
 * The namespace prefix will make the names of the actual metadata files a bit shorter. For example, let's assume
 * that you have a directory where you only store metadata files for the ``MyApplication\Entity`` namespace.
 *
 * If you use an empty prefix, your metadata files would need to look like:
 *
 * ``my-dir/MyApplication.Entity.SomeObject.yml``
 * ``my-dir/MyApplication.Entity.OtherObject.xml``
 *
 * If you use ``MyApplication\Entity`` as prefix, your metadata files would need to look like:
 *
 * ``my-dir/SomeObject.yml``
 * ``my-dir/OtherObject.yml``
 *
 * Please keep in mind that you currently may only have one directory per namespace prefix.
 *
 * @param string $dir The directory where metadata files are located.
 * @param string $namespacePrefix An optional prefix if you only store metadata for specific namespaces in this directory.
 *
 * @return SerializerBuilder
 *
 * @throws InvalidArgumentException When a directory does not exist
 * @throws InvalidArgumentException When a directory has already been registered
 */
public function addMetadataDir($dir, $namespacePrefix = '')
{
    // ...
}

如果指定第二个参数,似乎可以实现所需的功能。

这正是我所需的功能。我假设“prefix”只是要追加,但它似乎映射正确!
/**
 * Adds a directory where the serializer will look for class metadata.
 *
 * The namespace prefix will make the names of the actual metadata files a bit shorter. For example, let's assume
 * that you have a directory where you only store metadata files for the ``MyApplication\Entity`` namespace.
 *
 * If you use an empty prefix, your metadata files would need to look like:
 *
 * ``my-dir/MyApplication.Entity.SomeObject.yml``
 * ``my-dir/MyApplication.Entity.OtherObject.xml``
 *
 * If you use ``MyApplication\Entity`` as prefix, your metadata files would need to look like:
 *
 * ``my-dir/SomeObject.yml``
 * ``my-dir/OtherObject.yml``
 *
 * Please keep in mind that you currently may only have one directory per namespace prefix.
 *
 * @param string $dir The directory where metadata files are located.
 * @param string $namespacePrefix An optional prefix if you only store metadata for specific namespaces in this directory.
 *
 * @return SerializerBuilder
 *
 * @throws InvalidArgumentException When a directory does not exist
 * @throws InvalidArgumentException When a directory has already been registered
 */
public function addMetadataDir($dir, $namespacePrefix = '')
{
    // ...
}