2016-10-01 5 views
0

iはtwig(symfony3)にカスタム関数を追加するにはどうしたらいいですか?

//app/config/services.yml 
services: 
TwigEkler: 
    class: MainBundle\Twig\TwigEkler 
    tags: 
    - { name: TwigEkler } 

をservice.ymlためにこのコードを追加し、このファイル

//src/MainBundle/Twig/TwigEkler.php 
<? 

namespace MainBundle\Twig; 

class TwigEkler extends \Twig_Extension 
{ 
    public function getFunctions() 
    { 
     return array(
      new \Twig_SimpleFunction('gecis', array($this, 'gecisFunction')), 
     ); 
    } 

    public function gecisFunction($param) 
    { 
     if ($param == '4') { 
      return 'FAT'; 
     } else { 
      return ''; 
     } 
    } 

    public function getName() 
    { 
     return 'TwigEkler'; 
    } 

}?> 

を作成し、小枝

{{ gecis(level) }} 

でそれを使用するが、私はこのエラー

を取得しています

リクエスト.CRIT ICAL:未知のPHP例外Twig_Error_Syntax: "不明な " gecis/gecis.html.twig "の24行目の" gecis "関数。 (オブジェクト)(Twig_Error_Syntax(code:0):不明) C:\ wamp64 \ www \ deneme \ vendor \ twig \ twig \ lib \ Twig \ ExpressionParser.php行 573 {"例外" "関数の\" gecis/gecis.html.twig \ "の行24にある C:¥wamp64¥www¥deneme¥vendor¥twig¥twig¥lib¥Twig¥ExpressionParser.php:573)"}

私の間違いはどこですか?

+3

あなたのエラーはあなたのタグの宣言で使用されていると思います。 [cookbook](http://symfony.com/doc/current/templating/twig_extension.html)から – ciurciurek

+0

にタグ名を置き換えてみてください – DarkBee

+0

遅れて申し訳ありませんが、doctrineは私を夢中にしています:) @ ciurciurek; ;変更されたことはありません。 "[Symfony \ Component \ Debug \ Exception \ ClassNotFoundException] 名前空間" MainBundle \ Twig "からクラス" TwigEkler "を読み込もうとしました 別の名前空間に" use "ステートメントを忘れましたか? ? " [at] DarkBee;私は指示を読んだが、成功しなかった:( –

答えて

0
you need to follow 

create a directory in your AppBundle " Extensions " 

and create a file " TwigExtensions.php " 

In that file you need to define: 

    namespace AppBundle\Extensions; 

    use Symfony\Bridge\Doctrine\RegistryInterface; 
    use AppBundle\Helper\CommonHelper; 

    class TwigExtensions extends \Twig_Extension 
    { 
     public function __construct(RegistryInterface $doctrine){ 
      $this->doctrine = $doctrine; 
     } 

    } 

Use 

    public function getFunctions(){ 
    //Define your function that you  
} 


} 

Than create the function that you have define in " getFunctions". 

Now you can use that function on twig. 
関連する問題