2015-02-09 70 views
0

我试图创建一组简化的函数,让用户创建一个树枝模板,将被呈现为一个窗体。树枝扩展功能读取值

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

下面的代码应该在提交时打印一个名字为'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>'; 

    }); 

$这 - > _ twigEnv->调用addFunction( 'configkey',$ FUNC);

输出

the undesired output

+0

twig函数不应该返回结果,它必须返回结果 – 2015-02-09 14:45:26

+0

而不是echo嵌入在树枝文件中的html,因此您可以正确打印config数组值。你是独立使用Twig组件还是使用框架?我可以建议你一个基于symfony2框架的实现。让我知道 – Matteo 2015-02-09 16:20:16

+0

@kmlnvm我试着简单地返回一个字符串,但函数输出一个原始的html。 我在zf1应用程序中使用自定义zend视图,依靠小枝使用自定义的小枝加载器实现从S3中提取模板。 – mattimatti 2015-02-09 16:43:27

回答

0

Thakns大家的帮助,但我找到了解决办法更容易比预期..

$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)}} 

你有一个更好的方法就是使用关键参数进行绑定ameter?