我的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
我得到以下内容:
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没有被复制?
答案 0 :(得分:17)
注意:由于OP的答案很短,并没有真正详细说明,这里为未来的读者提供了更深入的答案,所以希望你没有像我一样尽可能地挖掘! :)
我们似乎正在遵循完全相同的教程并且遇到完全相同的问题,而且上面的答案并不具有描述性,我不得不自己做一点挖掘,这里是完全错误。
第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
您现在会注意到,如果您打开(使用Linux上的Windows资源管理器/ nautilus)您的dev目录并找到/web
文件夹,那么/web/bundles/bloggerblog/css/<stylesheet>.css
已自动为您创建了!
您现在可以使用以下方法访问代码中的CSS文件:
<link href="{{ asset('/bundles/bloggerblog/css/<stylesheet>.css') }}" type="text/css" rel="stylesheet" />
注意:&#39; .css&#39;替换为屏幕&#39; screen.css&#39;本教程
......那应该是它!
答案 1 :(得分:1)
我对原始问题有完全相同的问题,在运行'php app / console assets:install web'后,资产不会从bundle的Resources文件夹复制到web / bundles所以我所做的就是运行这个命令'php app / console cache:clear --env = prod'并修复了它。正如您所看到的那样,您正在处理prod资产或将资产安装到web目录中的prod环境中,因此对于prod来说,明确的cach是合理的。所以这样做:
1)$ php app / console cache:clear --env = prod 2)$ php app / console assets:安装web OR $ php app / console assets:安装web --symlink 3)$ php app / console assetic:dump --env = prod(如果你使用内置的Assetic,它会将/ css转储/组合到/ web / css中的一个大的,而不是/ web / bundles)
之后一切都会到位。你可以获得/ web / bundles中的所有资产以及/ web / css中的资产转储,所有这些资产都是针对prod env。
答案 2 :(得分:0)
刚出现此问题,请确保BlahBundle.php与Resources目录位于同一目录中