在这里你可以找到我关于 Symfony2 的第n个问题。
我正在使用一个使用文件中提供的路由名称的分页包routing.yml
。从我的角度来看,这种方法不灵活并且导致代码脏,因为如果我更改路由的名称,那么我必须查看所有 Twig 模板或 PHP 文件来更新路由名称。这对于小型 Web 应用程序来说是可以的,但是对于较大的应用程序会提供这样的 bug,并且也需要给开发人员带来很大的负担。
所以,我想将字符串变量xPager
传递给上述包提供的对象。字符串x应该在控制器中初始化,并且必须提供routing.yml
文件中给出的所需路由名称。
让我举个例子吧。路由文件如下:
//routing.yml
AcmeTestBundle_listall:
pattern: /test/page/{page}
defaults: { _controller: AcmeTestBundle:List:listall, page: 1 }
requirements:
page: \d+
那么相关的控制器是:
//use something....
class ListController extends Controller
{
public function exampleAction($page)
{
$array = range(1, 100);
$adapter = new ArrayAdapter($array);
$pager = new Pager($adapter, array('page' => $page, 'limit' => 25));
return array('pager' => $pager);
}
}
然后,在 twig 模板中,$pager
接收引用上述捆绑包的路由名称
{% if pager.isPaginable %}
{{ paginate(pager, 'AcmeTestBundle_listall') }}
{% endif %}
{% for item in pager.getResults %}
<p>{{ item }}</p>
{% endfor %}
关于如何在控制器内部的运行时获取“AcmeTestBundle_listall”字符串值的任何想法?