2017-10-11 49 views
1

"사용자 정의 프레임 워크"응용 프로그램을 Symfony로 다시 작성하려고하지만 모든 것을 한 번에 할 수 없으므로이 과정을 여러 단계로 나누었습니다.symfony가 아닌 응용 프로그램에서 symfony/양식을 렌더링

중요한 메모에서 - 나는 이미 symfony/templating 구성 요소와 symfony/twig-bridge 구성 요소를 구현했습니다.

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

내가 그래서 다음과 같은 오류가 발생합니다하고 있어요로서 :

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

내가 사용 템플릿을 렌더링하기 위해 내가 출력 템플릿에서 폼을 원하는 방법

PhpEngineTwigEngine을 사용하는 DelegatingEngine입니다.

\Symfony\Bridge\Twig\Extension\FormExtension으로 나뭇 가지를 설정하는 것은 well documented이지만, 내가 놓친 것은 PHP 설정입니다. 이것이 내가하는 일입니다.

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

설치가 잘못되었거나 무엇이 잘못 되었습니까?

답변

1

나는 대답을 찾았습니다 :

틀린 사용하고있다 FormRendererEngineInterface. 대신 \Symfony\Component\Form\Extension\Templating\TemplatingExtension 클래스에 의존 나 자신에 의해 form 도우미를 등록했습니다

$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())), 
)); 

당신은 TemplatingEngine에서 볼 수 있듯이 :

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에 의존 양식 템플릿은 나뭇 가지 파일이므로

제 설명이 잘못되었지만 해결책이 작동하는 경우 수정하십시오.

1

가장 간단한 방법은 Symfony Flex의 출시가 계기가되어서 앱 옆에 Symfony 3.3 표준 에디션을 설치했을 것이라고 생각합니다.

그런 다음 Symfony의 라우터를 응용 프로그램의 라우터와 함께 사용하는 방법을 찾으십시오.

그래서 당신은, 전체 심포니 프레임 워크를 가지고 거기에 양식 유형을 만들고 심포니가 렌더링 할 수 있습니다 :

  1. 을 기존 응용 프로그램에 새로운 Symfony Kernel와 아약스 호출
  2. 으로
+0

좋은 생각이지만 프로젝트에 혼란을 초래할 수 있습니다. / – Roomy