Я хочу визуализировать кусок html-контента с помощью ветки и сохранить результат в переменной.Тем не менее, мой код возвращает ответ 500 внутренняя ошибка сервера с ожидаемой ошибкой имени или номера.Что плохого в шаблоне или коде?
PHP-код:
$test = Yii::$app->view->render('@frontend/views/twig/layout.twig', [
'source' => $template->source
]);
Layout.twig:
{{include(template_from_string(source))}}
Переменная RMA представляет собой JSON-код, подобный этому:
{
"notify_customer": true,
"RMA": {
"Documents": [
{
"id": "CR00416378",
"type": "Posted Credit Memo"
}
]
}
}
Источник шаблона:
<p>{% set data = RMA %}</p>
<p>{% for documentsdata in data.RMA.Documents %}
<span>{{ documentsdata.id }} 2 {{ documentsdata.type }}</span>
{% endfor %}
</p>
Сообщение об ошибке:
{
"name": "Exception",
"message": "Expected name or number in \"__string_template__96819d4409bdb37ebb1f7f30cd3a3ba53a41a05ff6b95e4c708ece228f3bd384\" at line 203.",
"code": 0,
"type": "Twig\\Error\\SyntaxError",
"file": "/app/vendor/twig/twig/src/ExpressionParser.php",
"line": 419,
"stack-trace": [
"#0 /app/vendor/twig/twig/src/ExpressionParser.php(332): Twig\\ExpressionParser->parseSubscriptExpression(Object(Twig\\Node\\Expression\\NameExpression))",
"#1 /app/vendor/twig/twig/src/ExpressionParser.php(226): Twig\\ExpressionParser->parsePostfixExpression(Object(Twig\\Node\\Expression\\NameExpression))",
"#2 /app/vendor/twig/twig/src/ExpressionParser.php(112): Twig\\ExpressionParser->parsePrimaryExpression()",
"#3 /app/vendor/twig/twig/src/ExpressionParser.php(65): Twig\\ExpressionParser->getPrimary()",
"#4 /app/vendor/twig/twig/src/TokenParser/ForTokenParser.php(42): Twig\\ExpressionParser->parseExpression()",
"#5 /app/vendor/twig/twig/src/Parser.php(185): Twig\\TokenParser\\ForTokenParser->parse(Object(Twig\\Token))",
"#6 /app/vendor/twig/twig/src/Parser.php(98): Twig\\Parser->subparse(NULL, false)",
"#7 /app/vendor/twig/twig/src/Environment.php(563): Twig\\Parser->parse(Object(Twig\\TokenStream))",
"#8 /app/vendor/twig/twig/src/Environment.php(595): Twig\\Environment->parse(Object(Twig\\TokenStream))",
"#9 /app/vendor/twig/twig/src/Environment.php(408): Twig\\Environment->compileSource(Object(Twig\\Source))",
"#10 /app/vendor/twig/twig/src/Environment.php(381): Twig\\Environment->loadClass('__TwigTemplate_...', '__string_templa...', NULL)",
"#11 /app/vendor/twig/twig/src/Environment.php(462): Twig\\Environment->loadTemplate('__string_templa...')",
"#12 /app/vendor/twig/twig/src/Extension/StringLoaderExtension.php(44): Twig\\Environment->createTemplate(' <p>{% set data...', '__string_templa...')",
"#13 /app/api/runtime/Twig/cache/00/00fef28053e8c265804ec9f055c4ebfb01645ed4c62481fdeeea7464e3b120ad.php(35): twig_template_from_string(Object(Twig\\Environment), ' <p>{% set data...')",
"#14 /app/vendor/twig/twig/src/Template.php(395): __TwigTemplate_15531e50723960f5e9c16562e74134ca9f0a4bcd3ccc494f3e24a06525f1a433->doDisplay(Array, Array)",
"#15 /app/vendor/twig/twig/src/Template.php(372): Twig\\Template->displayWithErrorHandling(Array, Array)",
"#16 /app/vendor/twig/twig/src/Template.php(380): Twig\\Template->display(Array)",
"#17 /app/vendor/twig/twig/src/TemplateWrapper.php(45): Twig\\Template->render(Array, Array)",
"#18 /app/vendor/twig/twig/src/Environment.php(318): Twig\\TemplateWrapper->render(Array)",
"#19 /app/vendor/yiisoft/yii2-twig/src/ViewRenderer.php(176): Twig\\Environment->render('layout.twig', Array)",
"#20 /app/vendor/yiisoft/yii2/base/View.php(255): yii\\twig\\ViewRenderer->render(Object(yii\\web\\View), '/app/frontend/v...', Array)",
"#21 /app/vendor/yiisoft/yii2/base/View.php(156): yii\\base\\View->renderFile('/app/frontend/v...', Array, NULL)",
"#22 /app/api/modules/sendgrid/modules/v1/models/SendMail.php(183): yii\\base\\View->render('@frontend/views...', Array)",
"#23 /app/api/modules/mail/modules/v1/controllers/MailController.php(249): api\\modules\\sendgrid\\modules\\v1\\models\\SendMail::sendMail(Array, Array, Array, Array, Array, Array, Object(common\\models\\Template))",
"#24 [internal function]: api\\modules\\mail\\modules\\v1\\controllers\\MailController->actionSendMail()",
"#25 /app/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)",
"#26 /app/vendor/yiisoft/yii2/base/Controller.php(157): yii\\base\\InlineAction->runWithParams(Array)",
"#27 /app/vendor/yiisoft/yii2/base/Module.php(528): yii\\base\\Controller->runAction('send-mail', Array)",
"#28 /app/vendor/yiisoft/yii2/web/Application.php(103): yii\\base\\Module->runAction('mail/v1/mail/se...', Array)",
"#29 /app/vendor/yiisoft/yii2/base/Application.php(386): yii\\web\\Application->handleRequest(Object(yii\\web\\Request))",
"#30 /app/api/web/index.php(18): yii\\base\\Application->run()",
"#31 {main}"
]
}