Es algo que se pregunta mucha gente que empieza con Symfony: ¿cómo instalar un bundle nuevo?
En este ejemplo voy a indicar los pasos para instalar FOSJsRoutingBundle (que nos ayuda a crear rutas desde javascript). Mi instalación base de Symfony está en W:\WEB\wamp2.2\www\Symfony\
Si conoces GIT y lo usas, instalar un Bundle es tan simple como:
git submodule add git://github.com/FriendsOfSymfony/FOSJsRoutingBundle.git vendor/bundles/FOS/JsRoutingBundle |
Si no conoces GIT (y no te apetece conocerlo), sigue estos pasos:
1. Descargar, descomprimir.
Lo primero es entrar a la web del bundle en cuestión y descargar el ZIP.
Después extraer la carpeta (que tendrá un nombre tal que FriendsOfSymfony-FOSJsRoutingBundle-526cf7d) en vendor/bundles/FOS y renombrarla a JsRoutingBundle.
En mi caso, queda en W:\WEB\wamp2.2\www\Symfony\vendor\bundles\FOS\JsRoutingBundle
2. Registrar el namespace en app/autoload.php (ojo, es en la parte de registerNamespaces, NO en la de registerPrefixes):
// app/autoload.php $loader->registerNamespaces(array( // ... 'FOS' => __DIR__.'/../vendor/bundles', )); |
3. Registrar el bundle en app/AppKernel.php:
// app/AppKernel.php public function registerBundles() { $bundles = array( // ... new FOS\JsRoutingBundle\FOSJsRoutingBundle(), ); } |
3. Registrar la ruta en app/config/routing.yml
# app/config/routing.yml fos_js_routing: resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml" |
4. Publicar los correspondientes assets…
Si podéis crear symlinks:
php app/console assets:install --symlink web |
Y si no podéis…
php app/console assets:install web |
Y ya está… ¡instalado!
Todos los módulos se instalan de forma muy similar, asi que espero que este ejemplo os sirva.
EDIT:
Si la configuración no es correcta, os dará errores del tipo:
The autoloader expected class "Symfony\Bundle\FOSJsRoutingBundle\DependencyInj ection\FOSJsRoutingExtension" to be defined in file "W:\WEB\wamp2.2\www\Symfony\ app/../vendor/bundles\Symfony\Bundle\FOSJsRoutingBundle\DependencyInjection\FOSJ sRoutingExtension.php". The file was found but the class was not in it, the clas s name or namespace probably has a typo. |
O del tipo:
W:\WEB\wamp2.2\www\Symfony>php app/console assets:install web PHP Fatal error: Class 'FOS\JsRoutingBundle\FOSJsRoutingBundle' not found in W: \WEB\wamp2.2\www\Symfony\app\AppKernel.php on line 25 PHP Stack trace: PHP 1. {main}() W:\WEB\wamp2.2\www\Symfony\app\console:0 PHP 2. Symfony\Component\Console\Application->run() W:\WEB\wamp2.2\www\Symfony \app\console:22 PHP 3. Symfony\Bundle\FrameworkBundle\Console\Application->doRun() W:\WEB\wamp 2.2\www\Symfony\vendor\symfony\src\Symfony\Component\Console\Application.php:118 PHP 4. Symfony\Bundle\FrameworkBundle\Console\Application->registerCommands() W:\WEB\wamp2.2\www\Symfony\vendor\symfony\src\Symfony\Bundle\FrameworkBundle\Con sole\Application.php:66 PHP 5. Symfony\Component\HttpKernel\Kernel->boot() W:\WEB\wamp2.2\www\Symfony\ vendor\symfony\src\Symfony\Bundle\FrameworkBundle\Console\Application.php:80 PHP 6. Symfony\Component\HttpKernel\Kernel->initializeBundles() W:\WEB\wamp2.2 \www\Symfony\app\bootstrap.php.cache:511 PHP 7. AppKernel->registerBundles() W:\WEB\wamp2.2\www\Symfony\app\bootstrap.p hp.cache:717 Fatal error: Class 'FOS\JsRoutingBundle\FOSJsRoutingBundle' not found in W:\WEB\ wamp2.2\www\Symfony\app\AppKernel.php on line 25 Call Stack: 0.0003 635976 1. {main}() W:\WEB\wamp2.2\www\Symfony\app\console:0 0.0228 2892904 2. Symfony\Component\Console\Application->run() W:\WEB\w amp2.2\www\Symfony\app\console:22 0.0274 3140600 3. Symfony\Bundle\FrameworkBundle\Console\Application->d oRun() W:\WEB\wamp2.2\www\Symfony\vendor\symfony\src\Symfony\Component\Console\A pplication.php:118 0.0274 3140600 4. Symfony\Bundle\FrameworkBundle\Console\Application->r egisterCommands() W:\WEB\wamp2.2\www\Symfony\vendor\symfony\src\Symfony\Bundle\F rameworkBundle\Console\Application.php:66 0.0274 3140600 5. Symfony\Component\HttpKernel\Kernel->boot() W:\WEB\wa mp2.2\www\Symfony\vendor\symfony\src\Symfony\Bundle\FrameworkBundle\Console\Appl ication.php:80 0.0274 3140600 6. Symfony\Component\HttpKernel\Kernel->initializeBundle s() W:\WEB\wamp2.2\www\Symfony\app\bootstrap.php.cache:511 0.0274 3141224 7. AppKernel->registerBundles() W:\WEB\wamp2.2\www\Symfo ny\app\bootstrap.php.cache:717 |
Si habéis seguido los pasos de arriba al pie de la letra, debería funcionar. No obstante, aseguraos de que el fichero Symfony\vendor\bundles\FOS\JsRoutingBundle existe y contiene
namespace FOS\JsRoutingBundle; use Symfony\Component\HttpKernel\Bundle\Bundle; /** * FOSJsRoutingBundle class. * * @author William DURAND <william.durand1@gmail.com> */ class FOSJsRoutingBundle extends Bundle { } |

