未在树枝过滤器中指定的树枝扩展方法参数
问题描述:
此代码来自于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) }}
答
其实SlidingPagination $pagination
在树枝调用来自projects
。
+2
如果您向函数/过滤器提供'needs_environment'选项,则您的最后一条评论仅为真 – DarkBee
第一个变量是由'Twig'注入的,因为你已经将'need_environment'选项设置为true,更多信息[here](https://twig.sensiolabs.org/doc/2.x/advanced.html #environment-aware-filters) – DarkBee