2016-07-02 5 views
1

スタンドアロンフォームをsymfony3とtwigで作成できますか?私はこのエラーを乗り越えることはできません。メッセージが「Twig_Error_Syntax」で不明な「form_start」関数

Fatal error: Uncaught exception 'Twig_Error_Syntax' with message 'Unknown "form_start" function in "new.html.twig" at line 1

3.1 documentationthis exampleを引用し、正常に動作しますが、それは実際に使っている2.7

screenshot of example

私の単純なプロジェクトはこのように構成されています

. 
├── composer.json 
├── composer.lock 
├── src 
│   └── form.php 
├── vendor 
│   └── ... 
└── views 
    └── new.html.twig 

form.php

<?php 
require_once __DIR__.'/../vendor/autoload.php'; 

use Symfony\Component\Form\Forms; 
use Symfony\Bridge\Twig\Extension\FormExtension; 
use Symfony\Bridge\Twig\Form\TwigRenderer; 
use Symfony\Bridge\Twig\Form\TwigRendererEngine; 

// the Twig file that holds all the default markup for rendering forms 
// this file comes with TwigBridge 
$defaultFormTheme = 'form_div_layout.html.twig'; 

$vendorDir = realpath(__DIR__.'/../vendor'); 
// the path to TwigBridge library so Twig can locate the 
// form_div_layout.html.twig file 
$appVariableReflection = new \ReflectionClass('\Symfony\Bridge\Twig\AppVariable'); 
$vendorTwigBridgeDir = dirname($appVariableReflection->getFileName()); 
// the path to your other templates 
$viewsDir = realpath(__DIR__.'/../views'); 

$twig = new Twig_Environment(new Twig_Loader_Filesystem(array(
    $viewsDir, 
    $vendorTwigBridgeDir.'/Resources/views/Form', 
))); 
$formEngine = new TwigRendererEngine(array($defaultFormTheme)); 
$formEngine->setEnvironment($twig); 

// create your form factory as normal 
$formFactory = Forms::createFormFactoryBuilder() 
    ->getFormFactory(); 

use Symfony\Component\Form\Extension\Core\Type\TextType; 
use Symfony\Component\Form\Extension\Core\Type\DateType; 

$form = $formFactory->createBuilder() 
    ->add('task', TextType::class) 
    ->add('dueDate', DateType::class) 
    ->getForm(); 

var_dump($twig->render('new.html.twig', array(
    'form' => $form->createView(), 
))); 

new.html.twig

{{ form_start(form) }} 
    {{ form_widget(form) }} 

    <input type="submit" /> 
{{ form_end(form) }} 

composer.json

{ 
    "require": { 
     "symfony/form": "^3.1", 
     "symfony/twig-bridge": "^3.1", 
     "twig/twig": "^1.24" 
    } 
} 

全エラースタックトレース

Fatal error: Uncaught exception 'Twig_Error_Syntax' with message 'Unknown "form_start" function in "new.html.twig" at line 1.' in /var/www/a/forms/vendor/twig/twig/lib/Twig/ExpressionParser.php:574 
Stack trace: 
#0 /var/www/a/forms/vendor/twig/twig/lib/Twig/ExpressionParser.php(351): Twig_ExpressionParser-&gt;getFunctionNodeClass('form_start', 1) 
#1 /var/www/a/forms/vendor/twig/twig/lib/Twig/ExpressionParser.php(144): Twig_ExpressionParser-&gt;getFunctionNode('form_start', 1) 
#2 /var/www/a/forms/vendor/twig/twig/lib/Twig/ExpressionParser.php(84): Twig_ExpressionParser-&gt;parsePrimaryExpression() 
#3 /var/www/a/forms/vendor/twig/twig/lib/Twig/ExpressionParser.php(41): Twig_ExpressionParser-&gt;getPrimary() 
#4 /var/www/a/forms/vendor/twig/twig/lib/Twig/Parser.php(144): Twig_ExpressionParser-&gt;parseExpression() 
#5 /var/www/a/forms/vendor/twig/twig/lib/Twig/Parser.php(100): Twig_Parser-&gt;subparse(NULL, false) 
#6 /var/www/a/forms/vendor/twig/twig/lib/Twig/Environment.php(619): Twig_Parser-&gt;parse(Object(Twig_TokenStream)) 
#7 /var/www/a/forms/ in /var/www/a/forms/vendor/twig/twig/lib/Twig/ExpressionParser.php</b> on line 574 

答えて

3

あなたがexを追加するために、as per the exemple you providedを試してみましたテンションFormExtensionTwig_Environment?あなたはその後、trans()が不明であることについてエラーが発生します

$twig->addExtension(
    new FormExtension(new TwigRenderer($formEngine)) 
); 

あなたは$twig$formEngine変数を初期化してきた直後に次のコードを追加します。 symfony/translationパッケージを追加して修正してください:$ composer require symfony/translation

$twig->addExtension(
    new TranslationExtension(new Translator('en')) 
); 

用途を忘れないでください:

その後小枝は、上記と同じ方法で、この新しい拡張機能について知らせ

use Symfony\Bridge\Twig\Extension\TranslationExtension; 
use Symfony\Component\Translation\Translator; 
+0

うーんおかげ、役立つかもしれないが、実際にそれ新しいエラーが発生しました: ''Twig_Error_Syntax' with message 'Unknown' trans" filter in "form_div_layout.html.twig" –

+0

これは未知のform_start()の問題が解決されたことを意味します。しかし、もう一つは本当に上昇した。 – D4V1D

+0

'form_start()'の前に新しいエラーが導入され、そのエラーに達する前に死ぬので、これが修正されているかどうかはわかりません。 –

関連する問題