基本的に私が達成しようとしているのは、ソナタ e コマースで使用される fos ユーザー実装であるソナタ ユーザーに基づいて新しいログイン フォームを作成することです。新しいログイン フォームは元のログイン フォームと同じように動作するはずですが、レイアウトが異なります。
私がしたこと:
- 新しい小枝ファイルを作成しました
- ルーティングを追加しました:
m2m_partner:
resource: "@ApplicationSonataUserBundle/Resources/config/routing/partnerlogin.xml"
prefix: /partner
コンテンツ:
<route id="m2m_partner_login" pattern="/login">
<default key="_controller">ApplicationSonataUserBundle:Partner:login</default>
</route>
-security.yml に新しいファイアウォールを追加 ('admin' のものとかなり似ています)
partner:
pattern: /partner(.*)
context: user
form_login:
provider: fos_userbundle
login_path: /partner/login
use_forward: false
check_path: /partner/login_check
failure_path: null
logout:
path: /partner/logout
invalidate_session: false
handlers: ['sonata.page.cms_manager_selector']
anonymous: true
switch_user: true
その後、適切な資格情報を入力すると正常にログインしますが、不適切な資格情報を入力すると、/partner/login ではなく /login にリダイレクトされ、「資格情報が正しくありません」というメッセージが表示されます。どうすれば修正できますか?私は何かを逃していますか?
編集1:
管理者ログインがどのように行われているかを確認し、フォームアクションが通常のログインとは異なるコントローラーに移動することを発見しました。これは、fosユーザーの「チェック」アクションとまったく同じように見えます:
public function checkAction()
{
throw new \RuntimeException('You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.');
}
私はそれをコントローラーにコピーしましたが、この後、フォームを送信して資格情報が正しくない場合、次のエラーが表示されます。
You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.