ZF + 学说 - 自己的模型文件夹本地化



我开始开发新的应用程序,这是我第一个用ZF2编写的应用程序。我有一些关于使用 Doctrine1 进行 ZF1 应用的经验,但现在我想使用 ZF2 和 Doctrine2 进行应用。默认实体文件夹位于模块目录中。我想要一个模型文件夹,它在整个应用程序中共享。所以我准备了这样的应用程序结构:

config
models
 generated
module
 Administration
 Application
public
vendor

我设计了数据库(MySQL)并将其导入XML形式,使用Doctrine CLI。我还生成了模型。但是现在我遇到了问题 - 如何在我的模块中使用它?我准备了一些代码:

protected $em;
public function setEntityManager(EntityManager $em)
{
    $this->em = $em;
}
public function getEntityManager()
{
    if (null === $this->em) {
        $this->em = $this->getServiceLocator()->get('DoctrineORMEntityManager');
    }
    return $this->em;
}
public function indexAction()
{
    return new ViewModel(array(
        'carriers' => $this->getEntityManager()->getRepository('Carrier')->findAll()
    ));
}

而且我有一个错误"找不到类承运人"。这是路径的问题,但我完全是 ZF2 的新手,我不知道如何配置它......

您可以在配置中定义原则 2 实体的路径。现在我假设您有一个类似于下面的配置:

'doctrine' => array(
    'driver' => array(
        __NAMESPACE__ . '_driver' => array(
            'class' => 'DoctrineORMMappingDriverAnnotationDriver',
            'cache' => 'array',
            'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
        ),
        'orm_default' => array(
            'drivers' => array(
                __NAMESPACE__ . 'Entity' => __NAMESPACE__ . '_driver'
            )
        )
    )
)

基本上,您所要做的就是正确映射路径。在orm_defaults中,您可以单独定义每个模块的驱动程序,也可以仅使用全局驱动程序。

__NAMESPACE__ . '_driver'中,您可以使用给定名称定义驱动程序,并定义实体的确切存储位置。在您的情况下,这可能是类似的

'paths' => array(__DIR__ . '/../src/Administration/Entity')

或者您的模块在存储实体的位置命名的任何名称。在这种情况下Administration

此外,请始终分配完全限定的存储库名称,如下所示:

->getRepository('NAMESPACEEntityCarrier')

相关内容

  • 没有找到相关文章