今回はTwigですが、SymfonyのTwigの拡張機能についてです。
その中でも今回はルートのパスなどの取得の仕方や、作り方を紹介したいと思います。
公式:Twig Extensions Defined by Symfony
Twigでルート名やパラメータを取得する
Symfonyの拡張機能で、グローバルな変数としてapp
という変数が使用できます。
ルートなどの情報もappの中に格納されています。
ルート名を取得する
たとえば下記のようなルート設定のページがあったとします。(以後このページ設定を使用)
// Sample Root (Controller) /** * test product page. * * @Route( * "/product/{id}/{type}", * name="product_main", methods={"GET"}, * defaults={"type" = 1} * ) ...
ルート名やパラメータを取得する方法は下記になります。
// Global Variables // Route Name app.request.attributes.get('_route') // dump Variables "product_main" // Route Params app.request.attributes.get('_route_params') // dump Variables array:2 [ "id" => 13, "type" => 1 ]
Twigでpathを生成する
SymfonyのTwig Extensionsのpath
の使い方です。
// Basic relative URL path('route_name') // Basic absolute URL url('route_name')
基本的には上記のように、ルート名から相対URL・絶対URLを生成できます。今回のサンプルproduct_main
のようにパラメータが設定されているようなURLも生成できます。パラメータはdefaultが設定されていない場合は、必ず設定しなければなりません。
// product_main page sample // current page path(app.request.attributes.get('_route'), { 'id': app.request.attributes.get('_route_params').id}) // other id path(app.request.attributes.get('_route'), { 'id': 11})
パラメータを複数指定する場合
path(app.request.attributes.get('_route'), { 'id': 11, 'type': 2})
簡単ですが、現在のルート情報の取得と、URLの生成の方法の紹介でした。
Twigおすすめの書籍
Twigだけに特化した書籍は読んだことがないのですが、AmazonのKindleにありました。
これと同じくらいブログでまとめられたらと思います。