0

かなり大きな Symfony 1.2 プロジェクトを移行する必要があります。

まず、いくつかのページを Symfony 2 で処理できるように .htaccess を変更しました。

移行をスムーズにするために、私がやりたいことは、SF1 内でいくつかの SF2 アクション/テンプレート/メソッド/... をレンダリングできるようにすることです。

オートローダを SF1 アプリに追加したので、twig レンダリング メソッドなどにアクセスできます。

しかし、どうすれば SF2 アクションを呼び出すことができますか?

たとえば、最初にフッターのみを移行する場合は、レンダリングだけでなく、いくつかの php メソッドも必要になります。以前は SF1 コンポーネントにありましたが、今はどこにありますか?

移行の方法について何か提案があれば、ためらわないでください。

編集1:

どうやら、そのようなことを行う唯一の方法は、完全な twig テンプレートをレンダリングすること、および/またはこのテンプレートで他の部分的な twig テンプレートを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 に答える