2017-08-18 4 views
1

私のウェブサイトの言語を正しく切り替えることができますが、ログインすると現在の言語が失われてしまいます。ログイン前の例http://test.bu/app_dev.php/en/admin/slideshow/とログイン後私はこれを持っていますhttp://test.bu/app_dev.php/fr/admin/slideshow/ symfony2.7は常にロケールを取る:fr。私はFosUserBundleを使用します。私はggogled私はこれを修正するバンドルを使用することができますが、私はconfingurationを編集することでこれを解決することができると思う見つける。 は、ログイン後、私はdefault_target_pathすることで、Webサイトをリダイレクトする:このログイン後とログアウト後に現在のローカル言語が失われた

app_slideshow: 
    resource: "@AppBundle/Resources/config/routing/slideshow.yml" 
    prefix: /{_locale}/admin/slideshow 
ようslideshow_indexが
this is my config.yml 

imports: 
    - { resource: parameters.yml } 
    - { resource: security.yml } 
    - { resource: services.yml } 

# Put parameters here that don't need to change on each machine where the app is deployed 
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration 
parameters: 
    locale: fr 

framework: 
    #esi: ~ 
    translator: { fallback: %locale% } 
    secret: '%secret%' 
    router: 
     resource: '%kernel.root_dir%/config/routing.yml' 
     strict_requirements: ~ 
    form: ~ 
    csrf_protection: ~ 
    validation: { enable_annotations: true } 
    #serializer: { enable_annotations: true } 
    templating: 
     engines: ['twig'] 
    default_locale: '%locale%' 
    trusted_hosts: ~ 
    trusted_proxies: ~ 
    session: 
     # handler_id set to null will use default session handler from php.ini 
     handler_id: ~ 
    fragments: ~ 
    http_method_override: true 

# Twig Configuration 
twig: 
    debug: '%kernel.debug%' 
    strict_variables: '%kernel.debug%' 

# Doctrine Configuration 
doctrine: 
    dbal: 
     driver: pdo_mysql 
     host: '%database_host%' 
     port: '%database_port%' 
     dbname: '%database_name%' 
     user: '%database_user%' 
     password: '%database_password%' 
     charset: UTF8 
     # if using pdo_sqlite as your database driver: 
     # 1. add the path in parameters.yml 
     #  e.g. database_path: '%kernel.root_dir%/data/data.db3' 
     # 2. Uncomment database_path in parameters.yml.dist 
     # 3. Uncomment next line: 
     #path: '%database_path%' 

    orm: 
     auto_generate_proxy_classes: '%kernel.debug%' 
     naming_strategy: doctrine.orm.naming_strategy.underscore 
     auto_mapping: true 

# Swiftmailer Configuration 
swiftmailer: 
    transport: '%mailer_transport%' 
    host: '%mailer_host%' 
    username: '%mailer_user%' 
    password: '%mailer_password%' 
    spool: { type: memory } 
# app/config/config.yml 
fos_user: 
    db_driver: orm # other valid values are 'mongodb' and 'couchdb' 
    firewall_name: main 
    user_class: Gold\UserBundle\Entity\User 
    from_email: 
     address: "%mailer_user%" 
     sender_name: "%mailer_user%" 

    thanks stackoverflow 
+0

私はこの問題をjms routing bundleをインストールすることで解決しました。 – Mz1907

+0

jmsルーティングバンドルのリンクを私に教えてください –

+0

私は2分間あなたに答えを書きます。リンクと設定で – Mz1907

答えて

2
JMSルーティングバンドルの

リンクhttps://github.com/schmittjoh/JMSI18nRoutingBundle

しかし、あなたはそれをインストールする前に、この短いビデオチュートリアルをご覧ください。このチュートリアルでは、fosユーザーバンドルとurlのロケールの間の問題を理解するのに役立ちました。

https://codereviewvideos.com/course/getting-started-with-fosuserbundle/video/translations-and-internationalisation-in-fosuserbundle

あなたcomposer.jsonファイルのバンドルをルーティングJMSをインストールしたくない場合は、ここでは、このコマンドでphp composer.phar require jms/i18n-routing-bundle "dev-master"

をインストールすることができ、私の設定です:

jms_i18n_routing: 
    default_locale: "%locale%" 
    locales: ["fr", "en"] 
    strategy: prefix_except_default 

Security.yml:

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
      csrf_token_generator: security.csrf.token_manager 
      require_previous_session: false 
      login_path: fos_user_security_login 
      check_path: fos_user_security_check 
      default_target_path: your_route_name_homepage 
     logout: 
      path: fos_user_security_logout 
      target: your_route_name_homepage   
     anonymous: true 


     access_control: 
      - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY && !IS_AUTHENTICADED_FULLY } 
      - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY && !IS_AUTHENTICADED_FULLY } 
      - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
      - { path: ^/admin/, role: ROLE_ADMIN } 

Jmsルーティングバンドルをインストールした後。コマンドdebug/router(symfony 3)を実行し、ルート名とプレフィックスを見てください。

+1

私の私のaccess_control私はshood追加/ enと/ fr /他認証なしでadminにアクセスできます - {パス:^/en/admin /、役割:ROLE_ADMIN} - {パス:^/fr/admin/、役割:ROLE_ADMIN} @ Mintho433あなたは私の解決策が論理的だと思いますか?ありがとうございます –

+0

自分のアクセスコントロールキーにあるものを表示するために私の答えを更新しました。 – Mz1907

関連する問題