2014-01-31 31 views
1

我有一個快速的問題:定義模板的樹枝函數包括

我用於項目許多不同的元素。他們必須是可編輯的,所以我將它們分組,並把它們作爲這樣的一個模板:

{% include '::Fields/special.html.twig' with {'avg': 'avgvalue','class':'test','value':'myValue'} %} 

是否有possibillity做一個快捷功能對於這一點,像:

{{ special(fieldvalues) }} 

如果是這樣,怎麼樣我可以這樣做嗎?

回答

1

創建枝杈function,如:

<?php 

// src\BW\MainBundle\Twig\BWExtension.php 

namespace BW\MainBundle\Twig; 

use Symfony\Component\DependencyInjection\ContainerInterface; 

class BWExtension extends \Twig_Extension 
{  

    protected $container; 

    public function __construct(ContainerInterface $container) 
    { 
     $this->container = $container; 
    } 

    public function getFunctions() { 

     return array(
      new \Twig_SimpleFunction('special', array($this, 'specialFunction')), 
     ); 
    } 


    public function specialFunction($fieldvalues) { 
     // handle of field values 

     return $this->container->get('templating')->render('BWMainBundle:Main:test.html.twig'); // return string of rendered twig template 
    } 
} 

然後把它定義爲一個服務:

# src\BW\MainBundle\Resources\config\services.yml 
services: 
    bw_main.twig.bw_extension: 
     class: BW\MainBundle\Twig\BWExtension 
     arguments: ["@service_container"] 
     tags: 
      - { name: twig.extension } 
+0

你做你想要什麼? –

+0

我會測試它,並在短時間內回覆 - 預先感謝您 –

+0

所以我創建了這個Twig Extension類,但是如何在specialFunction()函數中加載模板? –