2012-09-05 7 views
12

seguí this para instalar SonataMediaBundle, pero recibí este error:PHP Error fatal: no se encontró la clase 'Aplicación Sonata MediaBundle ApplicationSonataMediaBundle' en /var/www/znata.com/app/AppKernel.php en la línea 47

PHP Fatal error: Class 'Application\Sonata\MediaBundle\ApplicationSonataMediaBundle' not found in /var/www/znata.com/app/AppKernel.php on line 47 

Después de utilizar el comando Sonata t generar la aplicación:

php app/console sonata:easy-extends:generate SonataMediaBundle 

nuevo directorio fue generada en:

apps/Application/Sonata/MediaBundle 

todo estaba hecho, pero cuando registré la aplicación generada en mi AppKernel.php obtuve ese error.

public function registerbundles() 
{ 
    return array(
     ... 
     new Application\Sonata\MediaBundle\ApplicationSonataMediaBundle(), 
     ... 
    ); 
} 

¿Tiene alguna idea de cómo solucionar este problema?

+0

¿Puede describir exactamente la ruta de su paquete? – DonCallisto

Respuesta

0
new Application\Sonata\MediaBundle\MediaBundle(), 

o

new Application\Sonata\MediaBundle\SonataMediaBundle(), 
+0

no, no funciona. – skonsoft

6

Después de depurar este problema, he encontrado que la aplicación namspace no está registrada.

En SF2.0, la documentación dice que debemos registrar este espacio de nombres como:

<?php 
$loader->registerNamespaces(array(
    ... 
    'Application' => __DIR__, 
    'Imagine'  => __DIR__.'/../vendor/imagine/lib', 
    'Gaufrette'  => __DIR__.'/../vendor/gaufrette/src', 
    'Buzz'   => __DIR__.'/../vendor/buzz/lib', 
    ... 
)); 

pero en SF2.1 lo hicieron hablado de esto.

Así que registré la aplicación de espacio de nombres en autoload.php y funciona bien.

así, el autoload.php aspecto:

<?php 

// file: app/autoload.php 

use Doctrine\Common\Annotations\AnnotationRegistry; 
$loader = require __DIR__.'/../vendor/autoload.php'; 

//custom for Application 
$loader->add("Application", __DIR__); 


// intl 
if (!function_exists('intl_get_error_code')) { 
    require_once __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php'; 

    $loader->add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs'); 
} 

AnnotationRegistry::registerLoader(array($loader, 'loadClass')); 

return $loader; 

Con esta nueva configuración es todo lo fine.But en SF2.0, se habló también de "Imagine", "Guffrette" y "zumbido" espacios de nombres Por lo tanto, al usarlos, deberíamos registrarlos también como el espacio de nombres de la aplicación.

Espero que esto te ayude.

9

Por defecto, el directorio raíz del proyecto no se encuentra en la ruta de la carga automática, solo el directorio "src". Puede utilizar

php app/console sonata:easy-extends:generate --dest=src SonataMediaBundle 

para generar paquete en el SRC o copia simple al src.

0

Como se mencionó en skonsoft, debe cargar los espacios de nombres en autoload.php. Tuve el mismo problema con FOQ.Elastica y lo resolví agregando lo siguiente.

$loader->add('FOQ', __DIR__.'/../vendor/bundles');

1

Usando compositor hice esto en composer.json: "autoload": { "psr-0": { "": "src/", "Application": "app/" } },

I añade el mapeo "Aplicación": "app /". Y luego ejecutar composer update

Esto generó autocarga adicional necesaria.

Cuestiones relacionadas