【问题标题】:Twig extension function read valueTwig 扩展函数读取值
【发布时间】:2015-04-09 08:18:00
【问题描述】:

我正在尝试创建一组简化的函数,让用户创建一个将呈现为表单的树枝模板。

表单,在执行时应该读取自生成的数据数组。

下面的代码应该打印一个名为“hello”的字段,当提交时(示例值为“world”)创建一个数组键 hello 并显示值为“world”的绑定字段。

示例模板:

  {{configkey('hello', 'Hello Field')}}

扩展功能

    $func = new Twig_SimpleFunction('configkey', function ($key='example', $label='label') {

        echo  '<div class="control-group">';
        echo  '<label class="control-label" for="' . $key . '">' . $label . '</label>';
        echo  '<div class="controls">';
        echo  '<input type="text" name="' . $key . '" value="{{config.' . $key . '}}"/>';
        echo  '</div>';
        echo  '</div>';

    });

$this->_twigEnv->addFunction('configkey',$func);

输出

【问题讨论】:

  • twig 函数不应该回显结果,它必须返回结果
  • 而不是 echo 将 html 嵌入到树枝文件中,这样您就可以正确打印配置数组值。您是在独立使用 Twig 组件还是在框架内使用?我可以建议你一个基于 symfony2 框架的实现。告诉我
  • @kmlnvm 我尝试简单地返回一个字符串,但该函数输出一个原始 html。我在一个具有自定义 zend 视图的 zf1 应用程序中,该应用程序依赖于具有自定义实现的 twig loader 从 S3 中提取模板的 twig。

标签: php twig extension-methods


【解决方案1】:

感谢大家的帮助,但我发现解决方案比预期的要容易..

 $func = new Twig_SimpleFunction('configkey', function ($key='example', $label='label', $value='') {

    echo  '<div class="control-group">';
    echo  '<label class="control-label" for="' . $key . '">' . $label . '</label>';
    echo  '<div class="controls">';
    echo  '<input type="text" name="' . $key . '" value="' . $value . '"/>';
    echo  '</div>';
    echo  '</div>';

});

电话将是

{{configkey('hello', 'Hello Field', config.hello)}}

您有更好的方法来仅使用 key 参数进行绑定吗?

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多