2013-07-01 178 views
0

我有一個相當大的Symfony 1.2項目遷移。Symfony 1.2到2.3遷移

首先,我修改了我的.htaccess所以我可以通過Symfony的處理某些頁面2.

我今天準備這樣做,使遷移更順暢,是能夠渲染一些SF2動作/模板/方法/ ...在SF1內。

我將自動加載器添加到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。如果我嘗試呈現網址Unknown tag name "render"

我猜Symfony 2 twig功能沒有加載,我該怎麼做?

編輯3:

好了,現在我可以做到這一點,但我有以下消息...

Twig_Error_Runtime一個例外的渲染 期間被扔一個模板(「只能在處理 主請求時完成一個片段的渲染。」)...

+0

對於從symfony 1移動到2完整的代碼重寫是必要的,許多人認爲改變了。 –

+0

我知道,我只希望能夠在SF1中渲染一些SF2模板,以便遷移更容易。編輯: //編輯: 爲了簡短起見,我試圖在SF1中引導SF2,所以我可以逐個重寫我的完整模塊(.htacess dispatching)並在SF1中渲染一些內容(例如在SF1中渲染SF2菜單)。 – Bonswouar

回答

0

編輯:我解決了它!

這裏是我的全部引導方法呈現一根樹枝模板並能夠使用一些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'); 
+0

你應該刪除你的答案,並將這些信息附加到你的問題。 – j0k