PHP的-‘Twig_Error_Syntax’与消息未知的“ form_start”功能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP的-‘Twig_Error_Syntax’与消息未知的“ form_start”功能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3716字,纯文字阅读大概需要6分钟。
内容图文
![PHP的-‘Twig_Error_Syntax’与消息未知的“ form_start”功能](/upload/InfoBanner/zyjiaocheng/683/42e3e36da24a4c32b8c6f1190687f1d2.jpg)
是否可以使用symfony3和twig创建独立表单?我无法克服此错误:
Fatal error: Uncaught exception ‘Twig_Error_Syntax’ with message ‘Unknown “form_start” function in “new.html.twig” at line 1
3.1 documentation引用了this example,效果很好,但实际上使用的是2.7
我的简单项目是这样组织的:
.
├── 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->getFunctionNodeClass('form_start', 1)
#1 /var/www/a/forms/vendor/twig/twig/lib/Twig/ExpressionParser.php(144): Twig_ExpressionParser->getFunctionNode('form_start', 1)
#2 /var/www/a/forms/vendor/twig/twig/lib/Twig/ExpressionParser.php(84): Twig_ExpressionParser->parsePrimaryExpression()
#3 /var/www/a/forms/vendor/twig/twig/lib/Twig/ExpressionParser.php(41): Twig_ExpressionParser->getPrimary()
#4 /var/www/a/forms/vendor/twig/twig/lib/Twig/Parser.php(144): Twig_ExpressionParser->parseExpression()
#5 /var/www/a/forms/vendor/twig/twig/lib/Twig/Parser.php(100): Twig_Parser->subparse(NULL, false)
#6 /var/www/a/forms/vendor/twig/twig/lib/Twig/Environment.php(619): Twig_Parser->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
解决方法:
您是否尝试as per the exemple you provided将扩展名FormExtension添加到Twig_Environment?
在初始化$twig和$formEngine变量之后,立即添加以下代码段:
$twig->addExtension(
new FormExtension(new TwigRenderer($formEngine))
);
然后,您会得到一个关于trans()未知的错误.通过添加symfony / translation包来更正此问题:$composer需要symfony / translation.
然后以与上述相同的方式让Twig知道此新扩展名:
$twig->addExtension(
new TranslationExtension(new Translator('en'))
);
不要忘记用途:
use Symfony\Bridge\Twig\Extension\TranslationExtension;
use Symfony\Component\Translation\Translator;
内容总结
以上是互联网集市为您收集整理的PHP的-‘Twig_Error_Syntax’与消息未知的“ form_start”功能全部内容,希望文章能够帮你解决PHP的-‘Twig_Error_Syntax’与消息未知的“ form_start”功能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。