【发布时间】:2013-07-01 11:01:01
【问题描述】:
我有一个非常大的 Symfony 1.2 项目要迁移。
首先,我修改了我的 .htaccess,以便我可以让 Symfony 2 处理一些页面。
为了使迁移更顺畅,我想做的是能够在 SF1 中呈现一些 SF2 动作/模板/方法/...。
我将自动加载器添加到 SF1 应用程序中,因此我可以访问 twig 渲染方法和其他内容。
但是我怎样才能调用 SF2 动作呢?
例如,如果我只想先迁移页脚,我还需要一些 php 方法,而不仅仅是渲染。那是以前在SF1组件中的,现在应该在哪里?
如果您对迁移方式有任何建议,请不要犹豫!
编辑 1:
显然,这样做的唯一方法是渲染一个完整的树枝模板,和/或在此模板中使用render(url, params) 调用其他部分树枝模板。
这是我能够渲染树枝模板的 SF1 代码:
public static function getTwig()
{
require_once __DIR__.'SF2_PATH/vendor/twig/extensions/lib/Twig/Extensions/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem( __DIR__.'SF2_PATH/sf2/src/VENDOR/BUNDLE/');
$twig = new Twig_Environment($loader, array(
'cache' => __DIR__.'SF2_PATH/sf2/app/cache/dev/twig',
));
return $twig;
}
等等:
$twig->loadTemplate('header.html.twig');
编辑 2:
这似乎不起作用,如果在树枝模板中我尝试使用{{render(controller('BUNDLE:CONTROLER:ACTION', {})) }} 渲染另一个模板,例如Twig_Error : The function "controller" does not exist。如果我尝试渲染 url Unknown tag name "render".
我猜 Symfony 2 twig 功能没有加载,我该怎么做?
编辑 3:
好的,现在我可以做到了,但是我收到了以下消息...
Twig_Error_Runtime 在渲染过程中抛出了异常 的模板(“渲染片段只能在处理 主请求。”)在 ...
【问题讨论】:
-
对于从 symfony 1 到 2 的迁移,一个完整的代码重写是必要的,因为许多人认为改变了。
-
我知道,我只是希望能够在 SF1 中渲染一些 SF2 模板,这样迁移会更容易。 // 编辑:简而言之,我试图在 SF1 中引导 SF2,因此我可以一个一个地重写我的完整模块(.htacess 调度)并在 SF1 中呈现一些(例如在 SF1 中呈现 SF2 菜单)。
标签: symfony symfony1 migration