Symfony2 – Неустранимая ошибка со связями

У меня есть ошибка [Решение в конце вопроса]

Fatal error: Class 'symblog\Blogger\BlogBundle\SymblogBundle' not found in /var/www/Symfony/app/AppKernel.php on line 20 

Я основал вопрос Как установить или интегрировать пакеты в Symfony2 , но предоставленные решения не помогли мне, потому что я уже делал то, что предлагалось там. Я слежу за учебником symblog.co.uk, за исключением того, что я создал на

 app/config/routing.yml 

 *.php resource 

Заранее спасибо!

Я должен добавить, что при регистрации пакета на консоли у меня есть ошибка

 The command was not able to configure everything automatically. You must do the following changes manually. 

И инструкции:

 - Edit the app/autoload.php file and register the bundle namespace at the top of the registerNamespaces() call: 'symblog\Blogger\BlogBundle' => '/var/www/Symfony/blog', 

за которым я последовал.

AppKernel.php

 class AppKernel extends Kernel { public function registerBundles() { $bundles = array( //.. new symblog\Blogger\BlogBundle\SymblogBundle(), ); 

/app/config/routing.yml

 SymblogBundle: resource: "@SymblogBundle/Resources/config/routing.php" prefix: / 

Как запрошено: /app/config/config.yml

 imports: - { resource: parameters.ini } - { resource: security.yml } framework: #esi: ~ #translator: { fallback: %locale% } secret: %secret% charset: UTF-8 router: { resource: "%kernel.root_dir%/config/routing.yml" } form: true csrf_protection: true validation: { enable_annotations: true } templating: { engines: ['twig'] } #assets_version: SomeVersionScheme session: default_locale: %locale% auto_start: true # Twig Configuration twig: debug: %kernel.debug% strict_variables: %kernel.debug% # Assetic Configuration assetic: debug: %kernel.debug% use_controller: false # java: /usr/bin/java filters: cssrewrite: ~ # closure: # jar: %kernel.root_dir%/java/compiler.jar # yui_css: # jar: %kernel.root_dir%/java/yuicompressor-2.4.2.jar # Doctrine Configuration doctrine: dbal: driver: %database_driver% host: %database_host% port: %database_port% dbname: %database_name% user: %database_user% password: %database_password% charset: UTF8 orm: auto_generate_proxy_classes: %kernel.debug% auto_mapping: true # Swiftmailer Configuration swiftmailer: transport: %mailer_transport% host: %mailer_host% username: %mailer_user% password: %mailer_password% jms_security_extra: secure_controllers: true secure_all_services: false 

[Edit] Решение было очень легко после ответа от @ Clamidity, что пакеты обычно расположены в src / Blogger / SymBlogBundle / BloggerSymBlogBundle.php

В то время как конфигурация с помощью консоли опиралась на расположение пакета, а по умолчанию – /../src, но я изменил его на /../blog. И, конечно, это не сработает, Symfony искал неправильное местоположение. Я сделал, чтобы переместить папки внутри / блог в / src, и все прошло отлично.

Есть несколько вещей, которые могут быть. Я просто расскажу о чем-нибудь, о чем я могу думать.

  1. Обычно связки помещаются в папку src. Таким образом, путь к вашему набору должен выглядеть так.

     src/Blogger/SymBlogBundle/BloggerSymBlogBundle.php 

    (Обратите внимание, что имя пакета следует за названием имени файла)

  2. Внутри BloggerSymBlogBundle.php убедитесь, что у вас есть что-то похожее на следующее:

     <?php namespace Blogger\SymBlogBundle; use Symfony\Component\HttpKernel\Bundle\Bundle; class BloggerSymBlogBundle extends Bundle { } 

    (Обратите внимание, что здесь также применяется одно и то же соглашение)

  3. В вашем autoload.php пространство имен, которое должно быть зарегистрировано, является частью «Blogger» имени / пути к вашему набору. Это связано с тем, что сам пакет находится в папке Blogger:

     'Blogger' => __DIR__.'/../src', 

    (Обратите внимание, что указанная папка является родительским элементом папки Blogger)

  4. Теперь в AppKernel.php зарегистрируйте пакет в соответствии с созданным и зарегистрированным пространством имен:

     new Blogger\SymBlogBundle\BloggerSymBlogBundle(), 

    * Примечание. Ваши ресурсы и ссылки на этот комплект с указанной конфигурацией будут

     BloggerSymBlogBundle 

    поэтому ваша php-маршрутизация будет вызвана с помощью:

     @BloggerSymBlogBundle/Resources/config/routing.php 

Существуют разные решения.

Очистите папку app / cache / (prod | dev). Когда вы отредактировали Appkernel и автозагрузку.

Неустранимая ошибка: Class 'symblog \ Blogger \ BlogBundle \ SymblogBundle' не найден в /var/www/Symfony/app/AppKernel.php в строке 20

Вот теперь разные проблемы:

  1. Посмотрите на SymblogBundle.php в папке Bundle и посмотрите, какое пространство имен они используют. Возможно, это действительно прописная буква («S»), как @kuba.

  2. Файл класса не находится в папке или у вас нет прав на папку, которую интерпретатор может загрузить файл.

  3. Я думаю, что ваш autoload.php неверен.

     'Avalanche' => __DIR__.'/../vendor/bundles', 

    Это обычный способ зарегистрировать пространство имен. В вашем случае это должно быть

     'Symlog' => '/var/www/Symfony/blog', 

Вот инструкции из «BloggerBundle», я надеюсь, что он правильный

Там вы можете увидеть, что ваша автозагрузка не корректна, а пространство имен – «Blogger».