如何“打破” Twig 中的循环?

Posted

技术标签:

【中文标题】如何“打破” Twig 中的循环?【英文标题】:How to "break" a loop in Twig? 【发布时间】:2015-10-04 10:00:54 【问题描述】:

我想在 Twig 模板引擎中使用break

% for key, db_staff_language in db_staff_languages %
  % for staff_language in model_data.staff_languages %
    % if staff_language.id == db_staff_language.id %
        <option value="db_staff_language.id" selected="selected">db_staff_language.staff_languages_data_translation[0].value</option>
    % else %
        <option value="db_staff_language.id">db_staff_language.staff_languages_data_translation[0].value</option>
    % endif %
    % break %   # <-- Not working #
  % endfor %
% endfor %

由于我无法用 Twig 解决问题,我还尝试了其他方法,例如:

-----------------------------------------------
% autoescape true %
<?php echo 'test' ?>
% endautoescape %
-----------------------------------------------
% php %
<?php echo 'test' ?>
% endphp %
-----------------------------------------------
% verbatim %
<?php echo "test"; ?>
% endverbatim %
-----------------------------------------------
 raw 
<?php echo "test"; ?>
 endraw 
-----------------------------------------------

这个问题有解决办法吗?

【问题讨论】:

引用the documentation:“与 PHP 不同,循环中不能中断或继续。但是,您可以在迭代期间过滤序列,从而跳过项目。” 与 PHP 不同,不可能在循环中中断或继续。检查您是否可以按照here in the doc 所述添加条件 How can I use break or continue within for in twig template? 的可能副本 【参考方案1】:

Twig 不包含 break 语句。根据官方手册,等效指令为for + if condition。

【讨论】:

以上是关于如何“打破” Twig 中的循环?的主要内容,如果未能解决你的问题,请参考以下文章

如何打破 C 中的无限 for(;;) 循环?

如何打破 Objective-C 中的两个嵌套 for 循环?

如何停止或摆脱 Twig 循环?

如何打破 Dart 中的嵌套循环

如何打破 webpack 钩子中的循环

如何打破批处理文件中的 FOR 循环?