0

アクセス a の場合のエラー/login:

「GET /login」のルートが見つかりません

アクセスしようとする/en/loginとログインにリダイレクトされますが、同じエラーが発生します。

私の routing.yml には次のものがあります。

login:
    pattern:   /{_locale}/login
    defaults:  { _controller: miomioBundle:Security:login}
    requirements:
        _locale: es|en|de
    options:
      expose: true
4

2 に答える 2

0

これは、2つの別々の問題があるようです。

  1. ルート/loginは存在しません。/ es / login、/ en / login、/ de / loginの上に3つのルートを設定しましたが、それ自体では/loginを設定していません。

  2. 上記の3つのルートが認証されていないユーザーにアクセスできないように、いくつかのアクセス制御を設定する必要があります。したがって、認証のために/ loginにリダイレクトされます...しかし、ポイント1で述べたように、そのルートは存在しません。

ポイント1を解決するには、ログイン用のフォームを処理するルートを実際に設定する必要があります。ステップバイステップのアプローチについては、Symfonyのドキュメントを参照してください:http ://symfony.com/doc/current/book/security.html#using-a-traditional-login-form

ポイント2の場合、ユーザーがログインせずにログインページにアクセスできるように、security.ymlファイルでいくつかのアクセス制御を設定する必要があります。

access_control:
  - { path: ^/es/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
  - { path: ^/en/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
  - { path: ^/de/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }

以下のようなアクセス制御がすでに必要です。そうしないと、ログインページが無限ループでクラッシュします。

access_control:
      - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }

ただし、単純なログインフォームの場合は、1つのログインフォームを使用し、代わりにラベルとログインテキストを翻訳で処理する方がはるかに便利です。http://symfony.com/doc/master/book/translation.html

于 2013-01-17T16:24:32.103 に答える
0

JMSTranslation Bundleと、より興味のあるJMSI18nRoutingBundleを調べてください。JMSI18nRoutingBundle を使用すると、config.yml ファイル内でルーティングがどのように機能するかを指定できます。

デフォルトのロケールを使用して URL を /login にしたい場合は、次のように設定します。

jms_i18n_routing:
  default_locale: en
  locales: [de, en]
  strategy: prefix_except_default

ただし、URL に常にロケールを含める場合は、en/login や de/login などのように、戦略パラメーターを「prefix」に変更します。

jms_i18n_routing:
  default_locale: en
  locales: [en, de]
  strategy: prefix
于 2013-01-17T19:17:55.550 に答える