不覆盖 symfony2.6 和 FOSUserBundle 1.3 中的模板有什么问题
What is the issue with not overriding templates in symfony2.6 and FOSUserBundle 1.3
我正在尝试使用 'simple' 选项将克隆路径设置为 .app/Resources/FOSUserBundle/views/layout.html.twig
来覆盖 FOSUserBundle 的基本布局,但是 symfony2.6 继续从 vendor 目录中呈现模板.
我的作曲家要求:
"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"
},
我检查了以下常见问题:
- 文件系统区分大小写 - 看起来不错
- 有正确的路径 - 似乎没问题
- 清除缓存:手动和从 app/console - 没问题
其他信息:
- 在带有 ubuntu-trusty-64 的 vagrant 实例上运行
- 同步文件夹是通过 NFS
我接下来应该看什么或做什么有什么想法吗?
问题主要与 Symfony2 或 FOSUserBundle 无关,但与 PHP 缓存文件统计信息的方式有关。
为了找到要加载的正确模板,标准 Symfony2 使用 Symfony\Component\HttpKernel\Kernel->locateResource
,首先检查 .app\Resources
目录中是否存在覆盖以及 $first
参数是否设置为 true它 returns 来自 foreach 循环内部。
在我的配置中,PHP 决定继续使用文件缓存并对 file_exists 回答否,即使文件在那里。
为了解决/解决这个问题,我的 AppKernel.php
覆盖了 Symfony\Component\HttpKernel\Kernel
的 locateResource
class:
<?php
class AppKernel extends Kernel
{
// .. other methods here
public function locateResource($name, $dir = null, $first = true)
{
clearstatcache(true);
return parent::locateResource($name, $dir, $first);
}
}
不漂亮,但很管用。
我正在尝试使用 'simple' 选项将克隆路径设置为 .app/Resources/FOSUserBundle/views/layout.html.twig
来覆盖 FOSUserBundle 的基本布局,但是 symfony2.6 继续从 vendor 目录中呈现模板.
我的作曲家要求:
"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"
},
我检查了以下常见问题:
- 文件系统区分大小写 - 看起来不错
- 有正确的路径 - 似乎没问题
- 清除缓存:手动和从 app/console - 没问题
其他信息: - 在带有 ubuntu-trusty-64 的 vagrant 实例上运行 - 同步文件夹是通过 NFS
我接下来应该看什么或做什么有什么想法吗?
问题主要与 Symfony2 或 FOSUserBundle 无关,但与 PHP 缓存文件统计信息的方式有关。
为了找到要加载的正确模板,标准 Symfony2 使用 Symfony\Component\HttpKernel\Kernel->locateResource
,首先检查 .app\Resources
目录中是否存在覆盖以及 $first
参数是否设置为 true它 returns 来自 foreach 循环内部。
在我的配置中,PHP 决定继续使用文件缓存并对 file_exists 回答否,即使文件在那里。
为了解决/解决这个问题,我的 AppKernel.php
覆盖了 Symfony\Component\HttpKernel\Kernel
的 locateResource
class:
<?php
class AppKernel extends Kernel
{
// .. other methods here
public function locateResource($name, $dir = null, $first = true)
{
clearstatcache(true);
return parent::locateResource($name, $dir, $first);
}
}
不漂亮,但很管用。