2017-10-11 11 views
1

私は "カスタムフレームワーク"アプリケーションをSymfonyに書き直そうとしていますが、すべてを一度に処理することはできません。symfony以外のアプリケーションでsymfony/formをレンダリングする

重要なお知らせ - 私はすでにsymfony/templatingコンポーネントとsymfony/twig-bridgeコンポーネントを実装しています。

出力に私がしたいどのようにテンプレート内のフォームです:

Symfony\Component\Form\Exception\LogicException 
No block "form" found while rendering the form. 
/var/www/html/vendor/symfony/form/FormRenderer.php on line 98 

私が使用しているテンプレートをレンダリングするには:私は次のエラーがスローされますので、やってたよう

<?php echo $view['form']->form($form) ?> 

PhpEngineTwigEngineを使用するDelegatingEngineです。

\Symfony\Bridge\Twig\Extension\FormExtensionでTwigを設定するのはwell documentedですが、私が見逃しているのはPHPの設定です。これは私がこれをやっている方法です:

new \Symfony\Component\Form\Extension\Templating\TemplatingExtension($phpEngine, $this->csrfManager()); 

あなたは私が見つからないか、何を私の設定が悪いの午前何私を指すもらえますか?

答えて

1

私は答えを見つけました:

私は間違って使用していますFormRendererEngineInterface。あなたがTemplatingEngineで見ることができるように

$phpEngine = new PhpEngine(new TemplateNameParser(), new FilesystemLoader(realpath(__DIR__.'/../Template').'/%name%')); 
$twigEngine = new TwigEngine($this->twig(), new TemplateNameParser()); 

$this->TemplateEngine = new DelegatingEngine(array(
    $phpEngine, 
    $twigEngine, 
)); 

$phpEngine->addHelpers(array(
    new FormHelper(new FormRenderer($this->twigFormRendererEngine())), 
)); 

public function __construct(PhpEngine $engine, CsrfTokenManagerInterface $csrfTokenManager = null, array $defaultThemes = array()) 
    { 
     $engine->addHelpers(array(
      new FormHelper(new FormRenderer(new TemplatingRendererEngine($engine, $defaultThemes), $csrfTokenManager)), 
     )); 
    } 

私はTwigRendererEngineインスタンスを必要としながら、それはTemplatingRendererEngineに依存している代わりに、私は自分でformヘルパーを登録した\Symfony\Component\Form\Extension\Templating\TemplatingExtensionクラスに頼るのフォームテンプレートはtwigファイルです。

私の説明が間違っていても、解決策が働いていれば修正してください。

1

あなたのアプリの隣にSymfony 3.3の標準版をインストールするのが最も簡単な方法だと思います(Symfony Flexのリリースが予定されています)。

この後、アプリケーションのルータでSymfonyのルータを使用する方法を見つけてください。

ですから、フルsymfonyフレームワークを持っていることで、あなたのフォームタイプを作成し、symfonyはそれをレンダリングしてみましょうことができます:レガシーアプリで新しいSymfony Kernel

  1. AJAX呼び出し
+0

これは良いアイデアですが、プロジェクトに混乱を招くでしょう: – Roomy

関連する問題