0

これは機能しますが、面倒です。私はパラメータバッグをいじり回してきましたが、私が持っているコードほどうまく機能するものはありません。

同じページにリダイレクトしてクエリ文字列を削除したいのですが、これよりも適切にコーディングします。

$r = $this->request;

$url = $r->getUri();

$replace = "abc=" . $r->query->get( 'abc' );
$url = str_replace("?".$replace, "?", $url);
$url = str_replace("&".$replace, "", $url);

$response = new RedirectResponse($url);
$this->event->setResponse($response);
4

1 に答える 1

5

クエリ文字列全体を削除するには:

$response = new RedirectResponse($request->getPathInfo());

クエリ文字列からパラメータのみを削除するには:

$route  = $request->get('_route');
$params = array_merge(
    $request->get('_route_params'), 
    $request->query->all()
);

unset($params['param_to_remove']);
// or $params['param_to_remove'] = null;

$response = new RedirectResponse($this->router->generate($route, $params);
于 2013-03-18T12:57:46.097 に答える