今回は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にありました。
これと同じくらいブログでまとめられたらと思います。