我试图使用'简单'来覆盖FOSUserBundle的基本布局。将克隆路径设为.app/Resources/FOSUserBundle/views/layout.html.twig
的选项,但symfony2.6继续从供应商目录中呈现模板。
我的作曲家需要:
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.6.*",
"doctrine/orm": "~2.2,>=2.2.3,<2.5",
"doctrine/dbal": "<2.5",
"doctrine/doctrine-bundle": "~1.2",
"twig/extensions": "~1.0",
"symfony/assetic-bundle": "~2.3",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~3.0,>=3.0.12",
"sensio/framework-extra-bundle": "~3.0,>=3.0.2",
"incenteev/composer-parameter-handler": "~2.0",
"friendsofsymfony/user-bundle": "~1.3"
},
我检查了以下常见问题:
其他信息: - 使用ubuntu-trusty-64在vagrant实例上运行 - 同步文件夹是通过NFS
我接下来应该做什么或做什么的想法?
答案 0 :(得分:0)
问题主要与Symfony2或FOSUserBundle无关,而是与PHP缓存文件统计信息的方式有关。
要找到要加载的正确模板,标准Symfony2使用Symfony\Component\HttpKernel\Kernel->locateResource
,首先检查.app\Resources
目录中是否存在覆盖,如果$first
参数设置为true,则返回来自foreach循环内部。
在我的配置中,PHP决定继续使用filecache并对file_exists回答no,即使该文件存在。
要绕过/解决此问题,我的AppKernel.php
会覆盖locateResource
类的Symfony\Component\HttpKernel\Kernel
:
<?php
class AppKernel extends Kernel
{
// .. other methods here
public function locateResource($name, $dir = null, $first = true)
{
clearstatcache(true);
return parent::locateResource($name, $dir, $first);
}
}
不漂亮,但确实有效。