【问题标题】:Fat Free Framework - Concatenating Template StringsFat Free 框架 - 连接模板字符串
【发布时间】:2020-02-17 20:29:39
【问题描述】:

我有一个网络应用程序,我要从 Slim v3 移植到 Fat Free Framework。逻辑部分是直截了当的。我的问题是将一些 Twig 视图模板转换为 F3 模板;具体来说,我很难构建连接字符串来填充 Materialize 类字段。

例如,假设我的联系表单验证传回了一个 message_err,其中声明“姓名字段必须至少为 3 个字符。”

Slim 应用程序利用 Twig 的模板引擎检查 data.name_err 是否为空,如果不是,它会通过连接 'data- err="' 和 data.name_err 然后这将用于在 Materialise 表单中显示错误状态。这是一个代码 sn-p:

<div class="input-field">
    <label for="name">Name:</label>
    {% if data.name_err %}
        {%  set messageName = 'data-error="'~data.name_err~'"' %}
    {% endif %}
    some more code here...
</div>

我曾尝试使用 F3 的内置模板引擎做类似的事情,但我尝试过的所有操作都会引发错误。以下是一些尝试:

<set msg="data-error=&#34 {{ @data.name_err }} "></set>

和:

<set msg="{{ data-error=&#34 @data.name_err &#34}}"></set>

由于似乎没有办法对字符串中的字符进行转义,这就是我尝试使用 ASCII 代码作为引号的原因。我也用等号试过了,但还是出错了。

如果有人有任何想法,我将不胜感激。否则我将不得不深入研究更改一些核心逻辑。

【问题讨论】:

    标签: php twig concatenation slim fat-free-framework


    【解决方案1】:

    在F3中,你可以使用{~ &lt;code&gt; ~}来执行php表达式而不回显结果。

    {~ @msg = "data-error=\"@data.name_err\""  ~}
    

    【讨论】:

      【解决方案2】:

      请尝试

      <set msg="{{ 'data-error=&#34'.@data.name_err.'&#34'}}"></set>
      

      【讨论】:

      • 感谢您的回复,但这仍然会引发错误:syntax error, unexpected '.', expecting variable (T_VARIABLE) or '{' or '$' [/Applications/MAMP/htdocs/pt-ff3/tmp/z12j1lprjqvu.6kt2ovz0t896.php:1] 它在您的系统上是否确实有效?也许我在测试中搞砸了其他事情?
      • 公平地说,我完全怀疑 ikkez 相信他们正在回答这个问题。我使用了他们的几个 F3 库,并且非常重视他们的工作。这就是为什么我想知道在我的测试环境中是否还有其他东西不起作用?其他人可以确认上面的 sn-p 是否适用于他们吗?
      • 我认为当表达式中有双引号时解析 标记会出现问题。
      • 是的,这可能是一个错误。我没有从上面测试过 sn-p
      • 我已经测试并更正了我的示例...应该以这种方式工作
      猜你喜欢
      • 1970-01-01
      • 2012-05-08
      • 2011-09-29
      • 1970-01-01
      • 2011-06-09
      • 2017-12-16
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      相关资源
      最近更新 更多