0

我有一个相当大的 Symfony 1.2 项目要迁移。

首先,我修改了我的 .htaccess,以便我可以让 Symfony 2 处理一些页面。

为了使迁移更顺畅,我想做的是能够在 SF1 中呈现一些 SF2 动作/模板/方法/...

我将自动加载器添加到 SF1 应用程序中,因此我可以访问树枝渲染方法和其他东西。

但是我怎么能调用 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 在渲染模板期间抛出异常(“渲染片段只能在处理主请求时完成。”)在...

4

1 回答 1

0

编辑:我解决了!

这是我在 Symfony 1中呈现 Twig 模板并能够使用一些 Symfony 2 功能的完整引导方法。

    $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');
于 2013-07-01T12:26:31.397 回答