首页 文章

Symfony 3一个文件应用程序并获得学说

提问于
浏览
1

Symfony 3.3,Doctrine 2一个文件应用程序(微内核)我想知道我是否可以在AppKernel类中使用实体menager .

的index.php

...

require __DIR__.'/vendor/autoload.php';

class AppKernel extends Kernel
{
    use MicroKernelTrait;

    public function registerBundles()
    {
        return [
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle()
        ];
    }

    protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader)
    {
        $c->loadFromExtension(
            'framework', [
                ...
            ],
            'doctrine', [
                ...
                ]
            ]
        );
    }

    protected function configureRoutes(RouteCollectionBuilder $routes)
    {
        $routes->add('/test', 'kernel:testAction', 'test');
    }

    public function testAction()
    {
        $em = $this->container->get('doctrine');

        $response = new Response(
            '<h1>TEST</h2>',
            Response::HTTP_OK,
            ['content-type' => 'text/html']
        );

        return $response;
    }

}

$kernel = new AppKernel('dev', true);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

我想在testAction中使用实体menager但我不知道如何将register doctrine作为服务 . 我应该使用configureContainer方法?有人可以帮忙吗?

1 回答

  • 0

    我认为问题出在 configureContainer() 方法中 . 对于学说,我们需要再次使用 loadFromExtension() 方法 . 之后我们可以在容器中看到学说 .

    protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader)
        {
             $c->loadFromExtension('framework', [
                   'secret' => 'S0ME_SECRET'
             ]);
    
             $c->loadFromExtension('doctrine', [
                    'dbal' => [
                      'driver' => 'pdo_mysql',
                      'host' => '127.0.0.1',
                      'port' => null,
                      'dbname' => 'dbname',
                      'user' => 'root',
                      'password' => '',
                      'charset' => 'UTF8'
                   ],
                   'orm' => [
                      'auto_generate_proxy_classes' => false,
                      'auto_mapping' => true,
                      ...
                   ]
             ]);
        }
    

相关问题