Пакет Symfony2 не регистрируется - PullRequest
5 голосов
/ 08 июня 2011

Я создал новый пакет с приложением / консолью. Попытка напечатать простой привет, чтобы я мог двигаться дальше. Я автоматически загрузил пространство имен, зарегистрировал пакет, создал страницу, но Symfony обнаружил исключение:

Bundle "PageBundle" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() function of your AppKernel.php file?

Но я уже сделал это.

Журнал показывает:

[2011-06-08 23:41:56] request.CRITICAL: InvalidArgumentException: Bundle "PageBundle" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() function of your AppKernel.php file? (uncaught exception) at /Applications/MAMP/htdocs/Symfony/app/bootstrap.php.cache line 634 

Я также очистил кешированную папку dev. Может кто-нибудь помочь мне понять, что не так. Я делал это раньше, у меня впервые такая проблема. Что-то делать с bootstrap.php.cache

Спасибо! Цените всю помощь.

КОД:

public function registerBundles()
{
    $bundles = array(
        new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
        new Symfony\Bundle\SecurityBundle\SecurityBundle(),
        new Symfony\Bundle\TwigBundle\TwigBundle(),
        new Symfony\Bundle\MonologBundle\MonologBundle(),
        new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
        new Symfony\Bundle\DoctrineBundle\DoctrineBundle(),
        new Symfony\Bundle\AsseticBundle\AsseticBundle(),
        new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
        new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
    );

    if (in_array($this->getEnvironment(), array('dev', 'test'))) {
        $bundles[] = new Webmuch\PageBundle\WebmuchPageBundle();
        $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
        $bundles[] = new Symfony\Bundle\WebConfiguratorBundle\SymfonyWebConfiguratorBundle();
    }

    return $bundles;
}

Пакет также отображается как активный пакет в профилировщике.

Ответы [ 2 ]

5 голосов
/ 14 июня 2011

Это не похоже на проблему с кешем начальной загрузки (строка 634 указывает на метод Kernel::getBundles(), который вызывает исключение), но на всякий случай есть скрипт, который перестроит его: bin\build_bootstrap.php , Кэш существует для уменьшения количества require() с, которые Symfony должен был бы сделать для загрузки основных классов Symfony, и пока вы используете одну из бета-версий, маловероятно, что там что-то действительно не так.

Похоже, что это может быть проблема с именами: ваша ошибка жалуется на отсутствие PageBundle, но, согласно вашему ядру, пакет должен называться WebmuchPageBundle. Вы правильно сослались на это в своем routing_dev.yml? Пример конфигурации маршрутизации будет:

page:
    resource: "@WebmuchPageBundle/Controller/DefaultController.php"
    type:     annotation

Поскольку вы определили этот пакет только для сред разработки и тестирования, вы должны использовать routing_dev.yml, а не routing.yml.

Затем проверьте, правильно ли назван класс комплекта. У вас должен быть файл в корне вашего комплекта (например, src/Webmuch/PageBundle/WebmuchPageBundle.php) со следующим содержимым:

namespace Webmuch\PageBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;

class WebmuchPageBundle extends Bundle
{
}

Да, и, конечно же, убедитесь, что пользователь веб-сервера может прочитать каталог вашего пакета. Я думаю , что выдает другую ошибку, но стоит проверить!

3 голосов
/ 02 июня 2013

У меня была эта ошибка раньше. Проверьте свои маршруты! Вероятно, где-то у вас есть такие строки:

webmuch_page_hello_world:
    pattern:   /hello
    defaults: { _controller: PageBundle:Default:hello }

Там "PageBundle" не правильно. Вы должны использовать "WebmuchPageBundle". Так что используйте это так: WebmuchPageBundle : По умолчанию: привет

...