2017-05-25 14 views
1

このコードは、symfony のKnp-paginator-bundleからのもので、Twig Extensionクラス(PaginationExtension.php)に存在します。私はレンダリング()メソッドの第2引数:SlidingPagination $paginationがどこから来たのか疑問に思っています(好奇心だけです)。この引数はtwigで提供されていないためです。誰かアイデア?小枝でtwigフィルタで指定されていないTwig拡張メソッドの引数

/** 
* {@inheritDoc} 
*/ 
public function getFunctions() 
{ 
    return array(
     new \Twig_SimpleFunction('knp_pagination_render', array($this, 'render'), array('is_safe' => array('html'), 'needs_environment' => true)) 
    ); 
} 

/** 
* Renders the pagination template 
*/ 
public function render(\Twig_Environment $env, SlidingPagination $pagination, $template = null, array $queryParams = array(), array $viewParams = array()) 
{ 
    return $env->render(
     $template ?: $pagination->getTemplate(), 
     $this->processor->render($pagination, $queryParams, $viewParams) 
    ); 
} 

拡張子は、このように使用されます。

{{ knp_pagination_render(projects) }} 
+1

あなたは真の、より多くの情報を 'need_environment'オプションを設定しているため、最初の変数はTwig''によって注入される[ここ](https://twig.sensiolabs.org/doc/2.x/advanced.html #environment-aware-filters) – DarkBee

答えて

1

実はSlidingPagination $paginationは小枝の呼び出しでprojects

から来ている:{{ knp_pagination_render(projects) }}

\Twig_Environment $envは小枝で、すべての拡張機能に挿入され、 。

+2

最後のコメントは、関数/フィルターに 'needs_environment'オプションを指定した場合にのみ真です – DarkBee

関連する問題