【问题标题】:Symfony 1.2 to 2.3 migrationSymfony 1.2 到 2.3 迁移
【发布时间】: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


【解决方案1】:

编辑:我解决了!

这是我的完整引导方法,用于渲染 Twig 模板并能够在 Symfony 1 中使用一些 Symfony 2 功能在 Symfony 1 中

    $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');

【讨论】:

  • 您应该删除您的答案并将这些信息附加到您的问题中。
猜你喜欢
  • 1970-01-01
  • 2018-05-08
  • 2012-09-18
  • 1970-01-01
  • 2014-04-18
  • 2013-01-27
  • 2015-10-17
相关资源
最近更新 更多