2017-07-02 1 views
2

Ich benutze das FOSUserBundle, ich möchte nur alle seine Routen mit einem '/ account' voranstellen. Ich habe einen UserBundle von FOSUserBundle vererben:Symfony3.3 Redirect to Route nimmt nicht den definierten Pfad

<?php 
//UserBundle.php 

namespace UserBundle; 

use Symfony\Component\HttpKernel\Bundle\Bundle; 

class UserBundle extends Bundle 
{ 
    public function getParent() 
    { 
     return 'FOSUserBundle'; 
    } 
} 

definierte diesen Controller mit einem Präfix in meiner Route:

# app/config/routing.yml 
user: 
    resource: "@UserBundle/Resources/config/routing.yml" 
    prefix: /account 

und Import FOS Routen in meinem Bündel:

#UserBundle/config/routing.yml 
fos_user: 
    resource: "@FOSUserBundle/Resources/config/routing/all.xml" 
    prefix: /user 

Ich habe versucht, Überschreiben Sie Datei für Datei und die gesamte Route nacheinander über XML (um die übergeordneten Dateien zu überschreiben) oder über Yml. Ich habe immer die Strecken gut definiert (Ausgabe von bin/console debug: Route --show-Controller):

fos_user_security_login    GET|POST ANY  ANY /account/login        FOSUserBundle:Security:login       
    fos_user_security_check    POST  ANY  ANY /account/login_check      FOSUserBundle:Security:check       
    fos_user_security_logout   GET|POST ANY  ANY /account/logout       FOSUserBundle:Security:logout       
    fos_user_profile_show    GET  ANY  ANY /account/profile/       FOSUserBundle:Profile:show        
    fos_user_profile_edit    GET|POST ANY  ANY /account/profile/edit      FOSUserBundle:Profile:edit        
    fos_user_registration_register  GET|POST ANY  ANY /account/register/       FOSUserBundle:Registration:register     
    fos_user_registration_check_email GET  ANY  ANY /account/register/check-email    FOSUserBundle:Registration:checkEmail     
    fos_user_registration_confirm  GET  ANY  ANY /account/register/confirm/{token}   FOSUserBundle:Registration:confirm      
    fos_user_registration_confirmed  GET  ANY  ANY /account/register/confirmed    FOSUserBundle:Registration:confirmed     
    fos_user_resetting_request   GET  ANY  ANY /account/resetting/request     FOSUserBundle:Resetting:request      
    fos_user_resetting_send_email  POST  ANY  ANY /account/resetting/send-email    FOSUserBundle:Resetting:sendEmail      
    fos_user_resetting_check_email  GET  ANY  ANY /account/resetting/check-email    FOSUserBundle:Resetting:checkEmail      
    fos_user_resetting_reset   GET|POST ANY  ANY /account/resetting/reset/{token}   FOSUserBundle:Resetting:reset       
    fos_user_change_password   GET|POST ANY  ANY /account/profile/change-password   FOSUserBundle:ChangePassword:changePassword 

Aber wenn ich auf die Route umleiten ‚fos_user_security_login‘ ich ‚/ login‘ umgeleitet bin und nicht '/ account/login'

Wenn Sie eine Idee, warum haben, werde ich bitte wissen: p EDIT: Hier ist der Firewalls und ACLs in den security.yml

firewalls: 
    # disables authentication for assets and the profiler, adapt it according to your needs 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 
    main: 
     pattern: ^/ 
     form_login: 
      check_path: /account/login_check 
      provider: fos_userbundle 
      csrf_token_generator: security.csrf.token_manager 
      # if you are using Symfony < 2.8, use the following config instead: 
      # csrf_provider: form.csrf_provider 
     logout: 
      path: /account/logout 
      target: /account/login 
     anonymous: true 

access_control: 
    # authorise to login and reset password for everyone 
    - { path: ^/account, role: IS_AUTHENTICATED_ANONYMOUSLY } 
+0

zeigen Sie Ihre security.yml –

+0

Hinzugefügt am Ende des Beitrags;) – Thiryn

+0

Eine Vorlage überschreiben funktioniert, aber es scheint, dass ein Controller überschreiben funktioniert auch nicht – Thiryn

Antwort

1

Ich fand das Problem, ich war wegen der schlechten richtigen Verwaltung. Ich habe versucht, auf / zugreifen und es auf /account/login umleiten, aber ich hatte nicht die ACL-Set für den / Pfad, was bedeutet, dass es mich automatisch umgeleitet /login, gab mir den Eindruck, das Problem war in meiner Umleitung.

0

Wahrscheinlich ist das Problem ist in

#UserBundle/config/routing.yml 
fos_user: 
    resource: "@FOSUserBundle/Resources/config/routing/all.xml" 
    prefix: /user 

Es überschreibt wahrscheinlich die Login-Route, die Sie standardmäßig definieren. Versuchen Sie in der Routing-Datei hinzufügen dieses:

login: 
    path: /account/login 
    defaults: { _controller: FOSUserBundle:Security:login } 

login_check: 
    path: /account/login_check 
    defaults: { _controller: FOSUserBundle:Security:check } 

Nachdem Sie alle Routen importieren, oder fügen Sie nur die Routen, die Sie aus dem FOSUserBundle benötigen. Sie können sie über die Datei FOSUserBundle/Resources/config/routing/all.xml im Lieferantenverzeichnis abrufen.