241

Symfony 2で現在のルートを取得するにはどうすればよいですか?

たとえば、routing.yml次のとおりです。

somePage:
   pattern: /page/
   defaults: { _controller: "AcmeBundle:Test:index" }

somePageこの値を取得するにはどうすればよいですか?

4

13 に答える 13

340

ContainerAware のもの (コントローラーなど) から:

$request = $this->container->get('request');
$routeName = $request->get('_route');
于 2011-08-17T16:55:06.793 に答える
192

小枝を使って:{{ app.request.attributes.get('_route') }}

于 2012-01-06T09:34:34.130 に答える
48

これを行う最も簡単な方法は次のとおりだと思います。

class MyController extends Controller
{
    public function myAction($_route)
    {
        var_dump($_route);
    }

    .....
于 2012-08-08T15:51:59.643 に答える
29

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) { ... }
于 2012-07-26T00:38:22.267 に答える
8
$request->attributes->get('_route');

コントローラー内のリクエスト オブジェクトからルート名を取得できます。

于 2013-10-01T09:46:54.287 に答える
4

私がそれから得ているのは _internal

$this->getRequest()->get('_route'). コード tuxedo25 が提案したリターンでさえ、コントローラー内からルート名を取得します_internal

このコードは、Symfony 1.X で「コンポーネント」と呼ばれていたもので実行されます。ページのコントローラーではなく、何らかのロジックを必要とするページの一部です。

Symfony 1.X での同等のコードは次のとおりです。sfContext::getInstance()->getRouting()->getCurrentRouteName();

于 2011-10-15T10:28:32.507 に答える
2

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>
于 2017-06-04T17:46:13.087 に答える