2

在使用 hautelook/alice-bundle 时,我无法加载自定义处理器。

在我的 services.yml 中:

alice.processor.attendance:
    class: MyVendor\MyBundle\DataFixtures\Processor\AttendanceProcessor
    arguments: [ "@doctrine.orm.my_entity_manager","@doctrine.orm.second_entity_manager" ]
    tags: [ { name: hautelook_alice.alice.processor } ]

我在 MyVendor/MyBundle 中的文件夹结构:

DataFixtures
    | Faker
    | ORM
       | attendance.yml
       | AppFixtures.php
    | Processor
       | AttendanceProcessor.php

在 AttendanceProcessor.php 中:

<?php

namespace MyVender\MyBundle\DataFixtures\Processor;

use Nelmio\Alice\ProcessorInterface;
use Isha\HRBundle\Entity\Attendance;

class AttendanceProcessor implements ProcessorInterface
{
    protected $em;
    protected $suvyaEm;

    public function __construct($suvyaEm,$em)
    {
        var_dump("hello3");
        die();
        $this->em = $em;
        $this->suvyaEm = $suvyaEm;
    }

    /**
     * {@inheritdoc}
     */
    public function preProcess($object)
    {
        var_dump("hello1");

        if (false === $object instanceof Attendance) {
            return;
        }

        var_dump("hello1");
        die();
    }

    /**
     * {@inheritdoc}
     */
    public function postProcess($object)
    {
        var_dump("hello2");
        die();
    }
}

最后在 AppFixtures.php

<?php

namespace MyVender\MyBundle\DataFixtures\ORM;

use Hautelook\AliceBundle\Doctrine\DataFixtures\AbstractLoader;
use Isha\HRBundle\DataFixtures\Processor\AttendanceProcessor;
use Nelmio\Alice\Fixtures;

class AppFixtures extends AbstractLoader
{
    /**
     * {@inheritDoc}
     */
    public function getFixtures()
    {
        return  array(
            __DIR__ . '/attendance.yml',
        );
    }
}

但没有消息被输出。

4

1 回答 1

0

服务标签似乎在某些时候发生了变化,当我设置标签时它对我有用fidry_alice_data_fixtures.processor

alice.processor.attendance:
    类:MyVendor\MyBundle\DataFixtures\Processor\AttendanceProcessor
    论据:[“@doctrine.orm.my_entity_manager”,“@doctrine.orm.second_entity_manager”]
    标签:[{名称:fidry_alice_data_fixtures.processor}]
于 2017-01-10T19:18:26.537 回答