2017-05-25 141 views
1

此代碼來自於symfony Knp-paginator-bundle,並且存在於樹枝擴展類(PaginationExtension.php)中。我想知道(只是好奇)render()方法中的第二個參數:SlidingPagination $pagination來自哪裏,因爲這個參數不是在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) }}

\Twig_Environment $env被樹枝插入到所有的擴展功能:

{{ knp_pagination_render(projects) }} 
+1

第一個變量是由'Twig'注入的,因爲你已經將'need_environment'選項設置爲true,更多信息[here](https://twig.sensiolabs.org/doc/2.x/advanced.html #environment-aware-filters) – DarkBee

回答

1

其實SlidingPagination $pagination在樹枝調用來自projects

+2

如果您向函數/過濾器提供'needs_environment'選項,則您的最後一條評論僅爲真 – DarkBee