私は登録モーダルウィンドウを持っています。登録が成功した後、同じページでユーザーをリダイレクトしたいと思います。Symfony 3 - FosUserBundle - 登録後に現在のページにリダイレクト
そのためには、Request
オブジェクトを含む新しい関連コントローラを使用してfos_user_registration_confirmed
ルートを上書きします。
フォームフィールドには、現在のパスを含むパラメータcurrent_path
を追加してから$current_path = $request->attributes->get('current_path');
で取得しようとしますが、常にNULLです。
フォームの非表示パラメータで同じことを試してみて$current_path = $request->request->get('current_path');
で取得しますが、やはり常にNULLです。
フォームの現在のパスは正しいですが、コントローラでそのパスを取得できないようです。私は
CURRENT_PATHは私register_content.html.twigテンプレートにある現在のパスを取得する方法:
public function registrationConfirmedAction(Request $request)
{
// POST: doesn't work
$current_path = $request->request->get('current_path');
// GET: doesn't work
if($current_path == NULL)
$current_path = $request->attributes->get('current_path');
if($current_path != NULL)
return new RedirectResponse($current_path);
return new RedirectResponse($this->generateUrl('pp_home_homepage'));
}
編集は
{% set current_path = app.request.get('current_path') %}
を私はコード内の2ヶ所でそれを追加します。
{{ form_start(form, {
'method': 'post',
'action': path('fos_user_registration_register') ~ '?current_path=' ~ current_path,
'attr': {
'class': 'fos_user_registration_register',
'novalidate': 'novalidate',
}
}) }}
そしてここに:
<input type="hidden" name="current_path" value="{{ current_path }}">
属性が私の基本テンプレートで生成されます。
{% set current_path = path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) %}
その後、私は私のコントローラに送信:
{{ render(controller(
'PPUserBundle:Registration:register',
{'current_path': current_path}
)) }}
現在のURLを追加した場所のコードを表示できます – Chibuzo
@Chibuzo Edited。しかし、 'current_path'値が有効になる前に言ったように、問題はありません。 – Arphel