Неустранимая ошибка при использовании приборов с Doctrine 2 - PullRequest
7 голосов
/ 30 января 2012

Я новичок в Symblog 2 и следую этому учебнику для Symblog2 .

Я создал Модель данных и попытался заполнить тестовые данныемоя БД, использующая Doctrine 2 fixtures .

Я скачала необходимые пакеты и добавила следующее к своему autoload.php:

'Doctrine\\Common\\DataFixtures'    => __DIR__.'/../vendor/doctrine-fixtures/lib',
'Doctrine\\Common' => __DIR__.'/../vendor/doctrine-common/lib',

и к AppKernel.php:

new Symfony\Bundle\DoctrineFixturesBundle\DoctrineFixturesBundle(),

Мой класс приборов выглядит следующим образом:

<?php
namespace Soccer\MainBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\FixtureInterface;
use Soccer\MainBundle\Entity\Team;

class TeamFixtures implements FixtureInterface
{
    public function load($manager)
    {
        $team1 = new Team();
        $team1->setName('Poland');
        $team1->setImg('./img/POL.png');
        $team1->setKitHome('./img/POL_1.png');
        $team1->setKitAway('./img/POL_2.png');
        $manager->persist($team1);

        $manager->flush();
    }
}

Когда я пытаюсь запустить php app/console doctrine:fixtures:load, я получаю следующее исключение:

Неустранимая ошибка: объявление Soccer \ MainBundle \ DataFixtures \ ORM \ TeamFixtures :: load () должно быть совместимо с ошибкой Doctrine \ Common \ DataFixtures \ FixtureInterface :: load () в D: \ xampp \ htdocs \ soccertips \ em-symfony \ src \ Soccer \ MainBundle \ DataFixtures \ ORM \ TeamFixtures.php on line 8

Call Stack:
    0.0004     328688   1. {main}() D:\xampp\htdocs\soccertips\em-symfony\app\console:0
    0.0283    2043272   2. Symfony\Component\Console\Application->run() D:\xampp\htdocs\soccertips\em-symfony\app\console:22
    0.0344    2230520   3. Symfony\Bundle\FrameworkBundle\Console\Application->doRun() D:\xampp\htdocs\soccertips\em-symfony\vendor\symfony\src\Symfony\Component\Console\Application.php:118
    3.3961   18394992   4. Symfony\Component\Console\Application->doRun() D:\xampp\htdocs\soccertips\em-symfony\vendor\symfony\src\Symfony\Bundle\FrameworkBundle\Console\Application.php:75
    3.3998   18394992   5. Symfony\Component\Console\Command\Command->run() D:\xampp\htdocs\soccertips\em-symfony\vendor\symfony\src\Symfony\Component\Console\Application.php:194
    3.4006   18395336   6. Symfony\Bundle\DoctrineFixturesBundle\Command\LoadDataFixturesDoctrineCommand->execute() D:\xampp\htdocs\soccertips\em-symfony\vendor\symfony\src\Symfony\Component\Console\Command\Command.php:224
    3.4056   18499160   7. Doctrine\Common\DataFixtures\Loader->loadFromDirectory() D:\xampp\htdocs\soccertips\em-symfony\vendor\bundles\Symfony\Bundle\DoctrineFixturesBundle\Command\LoadDataFixturesDoctrineCommand.php:97
    3.4084   18509624   8. require_once('D:\xampp\htdocs\soccertips\em-symfony\src\Soccer\MainBundle\DataFixtures\ORM\TeamFixtures.php') D:\xampp\htdocs\soccertips\em-symfony\vendor\doctrine-fixtures\lib\Doctrine\Common\DataFixtures\Loader.php:92

Я понимаю сообщение об ошибке, но, по моему мнению, мой метод load() совместим с FixtureInterface::load.

Может кто-нибудь сказать мне, что Я скучаю?Я шаг за шагом следовал инструкциям.

Ответы [ 3 ]

10 голосов
/ 31 января 2012

Метод FixtureInterface :: load () имеет подсказку типа, поскольку v1.0.0-ALPHA2 :

use Doctrine\Common\Persistence\ObjectManager;

function load(ObjectManager $manager);
8 голосов
/ 31 января 2012

Вы должны добавить зависимость ObjectManager:

use Doctrine\Common\Persistence\ObjectManager;
0 голосов
/ 26 января 2013

Как gview , предложенный с использованием Doctrine \ Common \ Persistence \ ObjectManager, потому что function load(ObjectManager $manager); ObjectManager нужно знать, где находится соответствующий класс.
Спасибо, это поможет мне в SF2.16

Они указывают на эту проблему здесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...