Skip to content

Commit 445dbde

Browse files
committed
handle paths in custom compiler pass
1 parent 48b6f5c commit 445dbde

2 files changed

Lines changed: 44 additions & 34 deletions

File tree

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace Hackzilla\Bundle\TicketBundle\DependencyInjection\Compiler;
4+
5+
use Symfony\Component\DependencyInjection\ContainerBuilder;
6+
use Symfony\Component\DependencyInjection\Definition;
7+
8+
class DoctrineOrmMappingsPass extends \Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\DoctrineOrmMappingsPass
9+
{
10+
function __construct($driver = null, array $namespaces = [], $managerParameters = [], $enabledParameter = false, array $aliasMap = [])
11+
{
12+
parent::__construct($driver, $namespaces, $managerParameters, $enabledParameter, $aliasMap);
13+
}
14+
15+
public function process(ContainerBuilder $container)
16+
{
17+
$namespaces = [];
18+
19+
if (
20+
$container->getParameter('hackzilla_ticket.model.ticket.class') === 'Hackzilla\Bundle\TicketBundle\Entity\Ticket'
21+
) {
22+
$path = realpath(__DIR__.'/../../Resources/config/doctrine/model/Ticket');
23+
$namespaces[$path] = 'Hackzilla\Bundle\TicketBundle\Entity';
24+
}
25+
26+
if (
27+
$container->getParameter('hackzilla_ticket.model.message.class') === 'Hackzilla\Bundle\TicketBundle\Entity\TicketMessage'
28+
) {
29+
$path = realpath(__DIR__.'/../../Resources/config/doctrine/model/TicketMessage');
30+
$namespaces[$path] = 'Hackzilla\Bundle\TicketBundle\Entity';
31+
}
32+
33+
$arguments = array($namespaces, '.orm.xml');
34+
$locator = new Definition('Doctrine\Common\Persistence\Mapping\Driver\SymfonyFileLocator', $arguments);
35+
$this->driver = new Definition('Doctrine\ORM\Mapping\Driver\XmlDriver', array($locator));
36+
$this->namespaces = $namespaces;
37+
38+
parent::process($container);
39+
}
40+
}

HackzillaTicketBundle.php

Lines changed: 4 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Hackzilla\Bundle\TicketBundle;
44

5-
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\DoctrineOrmMappingsPass;
5+
use Hackzilla\Bundle\TicketBundle\DependencyInjection\Compiler\DoctrineOrmMappingsPass;
66
use Symfony\Component\DependencyInjection\ContainerBuilder;
77
use Symfony\Component\HttpKernel\Bundle\Bundle;
88

@@ -15,38 +15,8 @@ public function build(ContainerBuilder $container)
1515
{
1616
parent::build($container);
1717

18-
$this->buildOrmCompilerPass($container);
19-
}
20-
21-
/**
22-
* Creates and registers compiler passes for ORM mappings.
23-
*
24-
* @param ContainerBuilder $container
25-
*/
26-
private function buildOrmCompilerPass(ContainerBuilder $container)
27-
{
28-
if (!class_exists('Doctrine\ORM\Version')) {
29-
return;
30-
}
31-
32-
$entities = [];
33-
34-
// if (
35-
// $container->hasParameter('hackzilla_ticket.model.ticket.class')
36-
// &&
37-
// $container->getParameter('hackzilla_ticket.model.ticket.class') === 'Hackzilla\Bundle\TicketBundle\Entity\Ticket'
38-
// ) {
39-
$entities[realpath(__DIR__.'/Resources/config/doctrine/model/Ticket')] = 'Hackzilla\Bundle\TicketBundle\Entity';
40-
// }
41-
42-
// if ($container->getParameter('hackzilla_ticket.model.message.class') === 'Hackzilla\Bundle\TicketBundle\Entity\TicketMessage') {
43-
$entities[realpath(__DIR__.'/Resources/config/doctrine/model/TicketMessage')] = 'Hackzilla\Bundle\TicketBundle\Entity';
44-
// }
45-
46-
if ($entities) {
47-
$container->addCompilerPass(
48-
DoctrineOrmMappingsPass::createXmlMappingDriver($entities)
49-
);
50-
}
18+
$container->addCompilerPass(
19+
new DoctrineOrmMappingsPass()
20+
);
5121
}
5222
}

0 commit comments

Comments
 (0)