2015-02-09 99 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?