Ожидаемое имя или номер веточки в шаблоне строки - PullRequest
0 голосов
/ 08 мая 2019

Я хочу визуализировать кусок 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}"
    ]
}
...