knp paginator のソート機能を Symfony2 アプリケーションに適切に実装するのに問題があります。問題が発生している理由は、FOSElastica が組み込みのページネーターからクエリを作成する方法がわからないためknp_pagination_sortable(...)
、twig ファイルで渡すパラメーターがわからないためだと思います。これは、コントローラーでページネーターをレンダリングする方法です。
$finder = $this->get('fos_elastica.finder.employees.employee');
$paginator = $this->get('knp_paginator');
// $name is a parameter that is properly passed to my action function in
// the controller
$knp = $paginator->paginate(
$finder->createPaginatorAdapter($name),
$this->get('request')->get('page', $page),
25
);
これは、ソート機能を実装しようとする twig ファイルの一部です。
<table border="1">
<tr>
<th>{{ knp_pagination_sortable(my_pager, 'Employee Number', 'emp_no') }}</th>
<th>{{ knp_pagination_sortable(my_pager, 'First Name', 'first_name') }}</th>
<th>{{ knp_pagination_sortable(my_pager, 'Last Name', 'last_name') }}</th>
<th>{{ knp_pagination_sortable(my_pager, 'Birth Date', 'birth_date') }}</th>
<th>{{ knp_pagination_sortable(my_pager, 'Gender', 'gender') }}</th>
<th>{{ knp_pagination_sortable(my_pager, 'Hire Date', 'hire_date') }}</th>
</tr>
{% for employee in my_pager %}
<tr>
<td>{{ employee.empNo }}</td>
<td>{{ employee.firstName }}</td>
<td>{{ employee.lastName }}</td>
<td>{{ employee.birthDate|date('M j Y') }}</td>
<td>{{ employee.gender }}</td>
<td>{{ employee.hireDate|date('M j Y') }}</td>
</tr>
{% endfor %}
</table>
$name が適切にフォーマットされた文字列であると仮定すると、クエリが PaginatorAdapter オブジェクト内でどのように見えるかを知っている人はいますか? var_dump を試みましたが、クエリはプライベート パラメータであり、get メソッドはありません (もちろん)。