Symfony Twig错误:未知" ^ macro_name ^"功能。你的意思是" ^ similar_function_name ^"?

时间:2017-11-02 10:36:19

标签: php symfony twig twig-extension

我做了以下小枝扩展:

class MyExtentions extends \Twig_Extension
{
   public function getFunctions()
   {
       return array(
           new \Twig_SimpleFunction('simiral_function_name', array($this, 'someFunction'),array('needs_environment' => true)),
       );
   }


   public function someFunction($url)
   {
       $url=parse_url($url,PHP_URL_PATH);
       $url=explode('/',$url);

       $params="";

       foreach($item as $key=> $url){
           $params.="_".$item;
       }

       return $params;
   }
}

在我的Twig模板上,我做了以下宏:

{% macro macro_name(url) %}
    {{ path('route_name',{'chunk':simiral_function_name(url)}) }}
{% endmacro   macro_name %}

但是当我在我的模板上访问它时,例如:

<a href="{{macro_name("http://example.com/path/files/somefile")}}"></a>

我收到以下错误:

Unknown "macro_name" function. Did you mean "similar_function_name"?

2 个答案:

答案 0 :(得分:1)

当您想要使用模板时,请执行source code

所述的操作
{% import _self as macro_template %}

之后您可以将其用作:

<a href="{{macro_template.macro_name("http://example.com/path/files/somefile")}}"></a>

代替macro_template你可以放任何你想要的东西。

答案 1 :(得分:1)

而非{%endmacro article_route%}更改为{%endmacro macro_name%}

{% macro macro_name(url) %}
    {{ path('route_name',{'chunk':simiral_function_name(url)}) }}
{% endmacro macro_name %} 

更多详情Named Macro End-Tags