ここで、Symfony2 に関する私のn番目の質問を見つけることができます。
ファイルで提供されているルート名を使用するページネーション バンドルrouting.yml
を使用しています。私の見解では、このアプローチは柔軟ではなく、汚いコードにつながります。ルートの名前を変更すると、すべての Twig テンプレートまたは PHP ファイルを調べてルート名を更新する必要があるためです。これは小さな Web アプリケーションでは問題ありませんが、大規模なアプリケーションではこのようなバグが発生し、開発者にも大きな負担がかかります。
そのため、上記のバンドルによって提供されるオブジェクトに文字列変数xを渡すことを考えていました。Pager
文字列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);
}
}
次に、小枝テンプレートで、$pager
上記のバンドルを参照するルート名を受け取ります
{% if pager.isPaginable %}
{{ paginate(pager, 'AcmeTestBundle_listall') }}
{% endif %}
{% for item in pager.getResults %}
<p>{{ item }}</p>
{% endfor %}
コントローラー内で実行時に「AcmeTestBundle_listall」文字列値を取得する方法はありますか?