Symfony 2で現在のルートを取得するにはどうすればよいですか?
たとえば、routing.yml
次のとおりです。
somePage:
pattern: /page/
defaults: { _controller: "AcmeBundle:Test:index" }
somePage
この値を取得するにはどうすればよいですか?
Symfony 2で現在のルートを取得するにはどうすればよいですか?
たとえば、routing.yml
次のとおりです。
somePage:
pattern: /page/
defaults: { _controller: "AcmeBundle:Test:index" }
somePage
この値を取得するにはどうすればよいですか?
ContainerAware のもの (コントローラーなど) から:
$request = $this->container->get('request');
$routeName = $request->get('_route');
小枝を使って:{{ app.request.attributes.get('_route') }}
これを行う最も簡単な方法は次のとおりだと思います。
class MyController extends Controller
{
public function myAction($_route)
{
var_dump($_route);
}
.....
Symfony 2.0-2.1
これを使用します:
$router = $this->get("router");
$route = $router->match($this->getRequest()->getPathInfo());
var_dump($route['_route']);
それはあなたに与えません_internal
。
Symfony 2.2+ の更新:これは Symfony 2.2+ を起動すると機能しません。バグを開いたところ、答えは「仕様による」でした。サブアクションでルートを取得したい場合は、それを引数として渡す必要があります
{{ render(controller('YourBundle:Menu:menu', { '_locale': app.request.locale, 'route': app.request.attributes.get('_route') } )) }}
そしてあなたのコントローラー:
public function menuAction($route) { ... }
$request->attributes->get('_route');
コントローラー内のリクエスト オブジェクトからルート名を取得できます。
私がそれから得ているのは
_internal
$this->getRequest()->get('_route').
コード tuxedo25 が提案したリターンでさえ、コントローラー内からルート名を取得します_internal
このコードは、Symfony 1.X で「コンポーネント」と呼ばれていたもので実行されます。ページのコントローラーではなく、何らかのロジックを必要とするページの一部です。
Symfony 1.X での同等のコードは次のとおりです。sfContext::getInstance()->getRouting()->getCurrentRouteName();
Symfony 3.3 では、この方法を使用して正常に動作しています。
私は次のような4つのルートを持っています
admin_category_index、admin_category_detail、admin_category_create、admin_category_update
そして、たった 1 行ですべてのルートに対してアクティブなクラスが作成されます。
<li {% if app.request.get('_route') starts with 'admin_category' %} class="active"{% endif %}>
<a href="{{ path('admin_category_index') }}">Product Categoires</a>
</li>