2011-06-08 25 views
5

Creé un nuevo paquete con la aplicación/consola. Estoy tratando de imprimir un saludo sencillo, así puedo continuar. Me cargan automáticamente el espacio de nombres, registrada el paquete, creé una página, pero Symfony detecta una excepción:Paquete Symfony2 no registrado

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? 

Pero ya he hecho eso.

El registro muestra:

[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 

También borra la carpeta dev caché. ¿Alguien puede ayudarme a descubrir qué está mal? He hecho esto antes, es la primera vez que tengo este problema. Algo que ver con bootstrap.php.cache

¡Gracias! Aprecia toda la ayuda.

CÓDIGO:

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; 
} 

El haz de muestra también como un paquete activo en el generador de perfiles.

+0

Eliminé los archivos de caché y de arranque. A continuación, reconstruyó el archivo bootstrap de la consola. Todavía el mismo error. ¿Qué me estoy perdiendo? – Aayush

+2

Muéstrenos su función registerBundles(). –

+0

Lo he agregado a la pregunta. ¡Gracias! – Aayush

Respuesta

5

No parece un problema con el caché de carga (la línea 634 apunta al método Kernel::getBundles(), que es lo que arroja la excepción), pero por si acaso, hay un script que lo reconstruirá: bin\build_bootstrap.php. Existe la memoria caché para reducir el número de require() s que Symfony necesitaría para cargar las clases principales de Symfony, y mientras use una de las betas, es poco probable que haya algo realmente incorrecto allí.

Parece que podría tratarse de un problema de nomenclatura: su error se queja de la falta de un PageBundle, pero de acuerdo con su kernel, el paquete debería llamarse WebmuchPageBundle. ¿Ha hecho referencia correctamente en su routing_dev.yml? Un ejemplo de configuración de enrutamiento sería:

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

Debido a que sólo haya definido ese paquete para los entornos de prueba dev &, debe utilizar routing_dev.yml y no routing.yml.

A continuación, compruebe que la clase de paquete tenga el nombre correcto. Usted debe tener un archivo en la raíz de su paquete (por ejemplo src/Webmuch/PageBundle/WebmuchPageBundle.php) con el siguiente contenido:

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

class WebmuchPageBundle extends Bundle 
{ 
} 

Ah, y, obviamente, comprobar que el usuario del servidor web puede leer el directorio de paquete. Creo que arroja un error diferente, pero vale la pena verificarlo.

3

Tuve este error antes. ¡Revisa tus rutas! Probablemente en algún lugar que tienen líneas de este tipo:

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

No "PageBundle" no está bien. Deberías usar "WebmuchPageBundle". Así que úsela así: WebmuchPageBundle: Predeterminado: hello

Cuestiones relacionadas