【问题标题】:Symfony2 - Fatal error with BundlesSymfony2 - Bundles 的致命错误
【发布时间】:2012-03-27 22:16:40
【问题描述】:

我收到错误[问题末尾的解决方案]

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

我提出了问题How to install or integrate bundles in 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

[编辑] @Clamidity 回答说捆绑包通常位于 src/Blogger/SymBlogBu​​ndle/BloggerSymBlogBu​​ndle.php 后,解决方案非常简单

虽然使用控制台进行配置,但它需要了解捆绑包的位置,默认为 /../src,但我改为 /../blog。当然它不会起作用,Symfony 正在寻找错误的位置。我所做的是将 /blog 中的文件夹移动到 /src ,一切都很好。

【问题讨论】:

  • 您的班级名称是否正确?您确定它是“symblog\Blogger\BlogBu​​ndle\SymblogBu​​ndle”而不是“Symblog\Blogger\BlogBu​​ndle\SymblogBu​​ndle”(注意大写“S”)?
  • 你的包的文件路径是什么?
  • 文件路径是/var/www/Symfony/blog

标签: php symfony bundle


【解决方案1】:

它可能是一些事情。我只会涵盖我能想到的所有内容。

  1. 通常捆绑包放在 src 文件夹中。所以你的包的路径应该是这样的。

    src/Blogger/SymBlogBundle/BloggerSymBlogBundle.php
    

    (注意包名遵循文件名约定)

  2. 在 BloggerSymBlogBu​​ndle.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
    

【讨论】:

    【解决方案2】:

    有不同的解决方案。

    清除 app/cache/(prod|dev) 文件夹。当您编辑 Appkernel 并自动加载时。

    致命错误:类 'symblog\Blogger\BlogBu​​ndle\SymblogBu​​ndle' 未在 /var/www/Symfony/app/AppKernel.php 第 20 行

    现在有不同的问题:

    1. 查看 Bundle 文件夹中的 SymblogBu​​ndle.php 并查看它们使用的命名空间。也许它真的像@kuba 所说的那样是一个大写字母(“S”)。

    2. Class 文件不在文件夹中,或者您对解释器可以加载文件的文件夹没有权限。

    3. 我认为您的 autoload.php 不正确。

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

      这是注册命名空间的常用方法。在你的情况下,它必须是

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

    Here are the instructions from the "BloggerBundle"我希望是正确的

    在那里您可以看到您的自动加载不正确,命名空间是“Blogger”。

    【讨论】:

      猜你喜欢
      • 2013-01-17
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 2014-04-17
      相关资源
      最近更新 更多