ok現在のルート名はapp.request.attributes.get('_route')
で取得できますが、URLから取得することはできません。Symfony2 URLからルート名を取得
と同様のものapp.request.attributes.get('/about')
?
ok現在のルート名はapp.request.attributes.get('_route')
で取得できますが、URLから取得することはできません。Symfony2 URLからルート名を取得
と同様のものapp.request.attributes.get('/about')
?
あなたはこのためにRouter
クラス/サービスを使用することができます。
public function indexAction()
{
$router = $this->get('router');
$route = $router->match('/foo')['_route'];
}
詳しい情報
the documentationに私は最近試合()メソッドをするために、現在の要求のHTTPメソッドを使用していることを発見しました要求と一致します。たとえば、PUTリクエストを実行している場合、PUTメソッドで指定したURLと一致するようになり、MethodNotAllowedException例外が発生します(たとえば、リファラーを取得するなど)。常にGETリクエストだというのは本当ではないかもしれないが
// set context with GET method of the previous ajax call
$context = $this->get('router')->getContext();
$currentMethod = $context->getMethod();
$context->setMethod('GET');
// match route
$routeParams = $this->get('router')->match($routePath);
// set back original http method
$context->setMethod($currentMethod);
:私はこの回避策を使用していますこの問題を回避するには
。あなたのケースではPOSTリクエストである可能性があります。
私はこの問題をSymfonyコミュニティに送りました。彼らの提案を見てみましょう。
'GET'ではなく' HEAD'メソッドを強制することができます。キャッシュファイルに 'appDevUrlMatcher.php'または' appProdUrlMatcher.php'をチェックすると、 'HEAD'メソッドがすべてのルートで常に許可されます。これにより、どのメソッドがリファラーと一致するかを見積もる必要がなくなりました。 – Elorfin
私も、私はそれが仕事THXです。この
$ref = str_replace("app_dev.php/", "", parse_url($request->headers->get('referer'),PHP_URL_PATH));
$route = $this->container->get('router')->match($ref)['_route'];
のように、その周りに働い絶対パス 使用する際の方法に一致してMethodNotAllowedを得ていた:=) – altore
私はこれを使用しますが、それは有効ではありません。 symfonyのルートサービスは、現在のリクエストの状態を持っています。実際のルートを取得するには、POST、PATCHまたはPUTなどのHTTPメソッドを使用してリクエストから作成されたコンテキストを設定する必要があります。 –