Zend Expressive:激活服务中的内部服务器错误500

时间:2016-05-31 15:45:33

标签: doctrine-orm zend-expressive

请帮助理解。
在标准应用程序CRUD中,在连接服务时:
/src/App/Panel/Service/CategoriesService.php
在行动中:
/src/App/Panel/Action/PanelCategoriesAction.php发生500错误
链接到存储库:https://github.com/drakulitka/expressive.loc.git
Zend Expressive + Doctrine

抱歉我的英文

1 个答案:

答案 0 :(得分:1)

你在这里混合了一些东西。这应该是你的实体:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(name="categories")
 * @ORM\Entity(repositoryClass="App\Entity\Repository\CategoriesRepository")
 */
class Categories
{
}

在doc注释注释中,它告诉Doctrine在哪里可以找到自定义存储库类。 Doctrine为你加载它。 repositry不需要构造函数。 Doctrine为你解决这个问题。

<?php

namespace App\Entity\Repository;

use App\Entity\Categories;
use Doctrine\ORM\EntityRepository;

class CategoriesRepository extends EntityRepository implements CategoriesRepositoryInterface
{
    // No constructor here

    public function fetchAll()
    {
        // ...
    }
}

然后你的工厂看起来像这样:

<?php

namespace App\Panel\Factory;

use Doctrine\ORM\EntityManager;
use Interop\Container\ContainerInterface;
use App\Entity\Categories;

class CategoriesRepositoryFactory
{
    /**
     * @param ContainerInterface $container
     * @return CategoriesRepository
     */
    public function __invoke(ContainerInterface $container)
    {
        // Get the entitymanager and load the repository for the categories entity
        return $container->get(EntityManager::class)->getRepository(Categories::class);
    }
}

在配置中使用:

<?php

return [
    'dependencies' => [
        'invokables' => [
        ],
        'abstract_factories' => [
        ],
        'factories' => [
            App\Entity\Repository\CategoriesRepositoryInterface::class => App\Panel\Factory\CategoriesRepositoryFactory::class,
        ],
    ],
];