我有一个非常大的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
。如果我尝试渲染网址Unknown tag name "render"
。
我猜Symfony 2 twig功能没有加载,我该怎么做?
编辑3:
好的,现在我可以做到,但我收到了以下消息......
Twig_Error_Runtime渲染期间抛出异常 模板(“渲染片段只能在处理时才能完成 主请求。“)in ...
答案 0 :(得分:0)
以下是呈现Twig模板的完整引导方法,并能够在Symfony 1 中使用某些Symfony 2功能,。< / p>
$loader = require_once __DIR__.'/../../../sf2/app/bootstrap.php.cache';
Debug::enable();
require_once __DIR__.'/../../../sf2/app/AppKernel.php';
$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();
Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$kernel->boot();
$kernel->getContainer()->enterScope('request');
$kernel->getContainer()->set('request', new \Symfony\Component\HttpFoundation\Request(), 'request');
$this->container = $kernel->getContainer()->get('twig');