Почему symfony2 не копирует мой пакет? - PullRequest
3 голосов
/ 03 марта 2012

Мой appKernel.php выглядит следующим образом:

<?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    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(),
            new Blogger\BlogBundle\BloggerBlogBundle(),
        );

        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
            $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
            $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
        }

        return $bundles;
    }

    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
    }
}

Мой autoload.php выглядит следующим образом:

<?php

use Symfony\Component\ClassLoader\UniversalClassLoader;
use Doctrine\Common\Annotations\AnnotationRegistry;

$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
    'Symfony'          => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'),
    'Sensio'           => __DIR__.'/../vendor/bundles',
    'JMS'              => __DIR__.'/../vendor/bundles',
    'Doctrine\\Common' => __DIR__.'/../vendor/doctrine-common/lib',
    'Doctrine\\DBAL'   => __DIR__.'/../vendor/doctrine-dbal/lib',
    'Doctrine'         => __DIR__.'/../vendor/doctrine/lib',
    'Monolog'          => __DIR__.'/../vendor/monolog/src',
    'Assetic'          => __DIR__.'/../vendor/assetic/src',
    'Metadata'         => __DIR__.'/../vendor/metadata/src',
));
$loader->registerPrefixes(array(
    'Twig_Extensions_' => __DIR__.'/../vendor/twig-extensions/lib',
    'Twig_'            => __DIR__.'/../vendor/twig/lib',
));

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

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

$loader->registerNamespaceFallbacks(array(
    __DIR__.'/../src',
));
$loader->register();

AnnotationRegistry::registerLoader(function($class) use ($loader) {
    $loader->loadClass($class);
    return class_exists($class, false);
});
AnnotationRegistry::registerFile(__DIR__.'/../vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php');

// Swiftmailer needs a special autoloader to allow
// the lazy loading of the init file (which is expensive)
require_once __DIR__.'/../vendor/swiftmailer/lib/classes/Swift.php';
Swift::registerAutoload(__DIR__.'/../vendor/swiftmailer/lib/swift_init.php');

Когда я делаю:

php app/console assets:install web

Iполучите следующее:

Installing assets for Symfony\Bundle\FrameworkBundle into web/bundles/framework
Installing assets for Acme\DemoBundle into web/bundles/acmedemo
Installing assets for Symfony\Bundle\WebProfilerBundle into web/bundles/webprofiler
Installing assets for Sensio\Bundle\DistributionBundle into web/bundles/sensiodistribution

Почему мой BloggerBlogBundle не копируется?

Ответы [ 4 ]

17 голосов
/ 25 мая 2013

Примечание. Поскольку ответ ОП короткий и не содержит слишком много подробностей, ниже приведен более подробный ответ для будущих читателей, поэтому, надеюсь, вам не нужно будет так много копать, как я.!:)

Похоже, что мы следуем одному и тому же учебнику и имеем ту же самую проблему, и поскольку ответ выше не очень описательный, и мне пришлось немного покопаться, вот точно что не так.

Шаг 1

Ваш src/Blogger/BlogBundle должен иметь в папке /resources папку public/css,Поэтому вам нужно разместить свои CSS-файлы следующим образом:

src/Blogger/BlogBundle/resources/public/css/<stylesheet>.css

Создайте папку /public/css, если она не существует (она не существовала для меня).

Шаг 2 Вам необходимо запустить инструмент управления сборкой, чтобы автоматически создать символическую ссылку в /web, чтобы к ним можно было получить доступ.

php app/console assets:install web

Теперь вы заметите, что если вы откроете (используя windows explorer / nautilus в linux) свой каталог dev и найдете папку /web, то /web/bundles/bloggerblog/css/<stylesheet>.css будет создан автоматически для вас!

Теперь вы можете получить доступ к своим CSS-файлам в своем коде, используя:

<link href="{{ asset('/bundles/bloggerblog/css/<stylesheet>.css') }}" type="text/css" rel="stylesheet" />

Примечание: «.css» заменяется на экран «screen.css» дляэтот урок

... и так и должно быть!

1 голос
/ 22 ноября 2014

У меня точно такая же проблема с исходным вопросом, когда ресурсы не копируются из папки «Ресурсы» комплектов в web / bundles после запуска «php app / console assets: install web», поэтому я выполнил эту команду'php app / console cache: clear --env = prod' и это исправлено.Как вы видите, вы имеете дело с активами prod или устанавливаете ресурсы в среду prod в веб-каталоге, поэтому разумно использовать кэш для prod.Сделайте это:

1) $ php кеш приложения / консоли: clear --env = prod 2) $ php app / console assets: установить веб-ИЛИ $ php app / console assets: установить web --symlink 3) $ php сборка приложения / консоли: dump --env = prod (Если вы используете встроенный в Assetic, он будет сбрасывать / объединять CSS в один большой файл в / web / css, а не в / web / bundles)

все идет на свои места после этого.вы получаете все ресурсы в вашем / web / bundles и сборочном дампе в / web / css, и все это для prod env.

0 голосов
/ 27 ноября 2017

У меня сегодня была эта проблема с Symfony3.3.13, и проблема была в том, что каталог public был заглавным Public, что, похоже, нарушает скрипт установки.Смена имени и это сработало сразу.

0 голосов
/ 09 мая 2017

Только что возникла эта проблема, убедитесь, что BlahBundle.php находится в том же каталоге, что и каталог ресурсов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...