【问题标题】:Twig error when try to format {$尝试格式化 {$ 时出现 Twig 错误
【发布时间】:2018-04-28 22:07:37
【问题描述】:

尝试将该代码格式化为 twig 格式:

<textarea class="form-control" name="email_review_subject_<?php echo $language['language_id']; ?>" ><?php echo isset(${'email_review_subject_' . $language['language_id']}) ? ${'email_review_subject_' . $language['language_id']} : ''; ?></textarea>

所以我尝试了这种格式:

<textarea class="form-control" name="email_review_subject_{{ language['language_id'] }}" >{{ isset({'email_review_subject_' . language.language_id}) ? {'email_review_subject_' . language.language_id} : '' }}</textarea>

错误:

未捕获的异常 'Twig_Error_Syntax' 带有消息 'A hash key must 后跟一个冒号 (:)。价值的意外标记“标点符号” “。” (“标点符号”的值应为“:”)

【问题讨论】:

    标签: php twig


    【解决方案1】:

    twig 中没有 isset 这样的东西。如果要在 twig 中使用动态变量,还需要访问特殊变量 _context

    一些可能的解决方案,

    <textarea class="form-control" name="email_review_subject_{{ language['language_id'] }}" >{{ attribute(_context, 'email_review_subject_'~language.language_id)|default('') }}</textarea>
    
    <textarea class="form-control" name="email_review_subject_{{ language['language_id'] }}" >{{ attribute(_context, 'email_review_subject_'~language.language_id) is defined ? attribute(_context, 'email_review_subject_'~language.language_id) : '' }}</textarea>
    

    fiddle

    【讨论】:

      【解决方案2】:

      我很确定你不能使用. 在 Twig 中连接字符串。试试~,看看这里:How to concatenate strings in twig

      【讨论】:

      • 您是否替换了代码中的两个串联?如果是这样,则此错误不太可能发生,因为它明确告诉您您有一个时期 (.)。如果失败,则可能是使用动态变量名的问题。试试属性函数:twig.symfony.com/doc/2.x/functions/attribute.html
      • 我觉得问题出在这里 "(${"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多