我将 Text::Xslate 与 HTML::FormHandler 一起使用(HTML::FormHandler 实际上由 CatalystX::SimpleLogin 在幕后使用,以防有帮助)。我正在使用 Text::Xslate 的 TTerse 语法并尝试显示模板中的错误,如下所示:
[% FOR field IN login_form.error_fields %]
[% FOR error IN field.errors %]
<p>[% field.label _ ': ' _ error %]</p>
[% END %]
[% END %]
如果我只是打印出来
[% login_form %]
它返回
CatalystX::SimpleLogin::Form::Login=HASH(0x7fbb21722a20)
,这是我所期望的。但是当我调用 error_fields
时,它只返回 1
。但是,当我使用 Template::Toolkit 而不是 Text::Xslate 时,它可以正常工作并显示错误。有谁知道为什么 error_fields
返回数字而不是数组?
这可能是因为 XSlate 在标量上下文中调用方法并且需要 arrayref。似乎错误以数组形式返回https://metacpan.org/release/GHANK/HTML-FormHandler-0.40068/source/lib/HTML/FormHandler.pm#L506