2012-06-06 103 views
1

到目前爲止,我的「TwigBundle」定製error404.html.twig頁面顯示正常的生產模式,當我拋出:Symfony2的:自定義404錯誤NotFoundHttpException

$this->createNotFoundException('whatevs'); 

然而,當「NotFoundHttpException」被拋出Symfony(例如沒有找到路由時),app_dev上顯示「找不到路由」頁面,提及「404 Not Found」,但在生產模式下它只顯示一個空白頁面...

哪根據Symfony文檔的說法,這看起來不正常:「createNotFoundException()方法創建一個特殊的NotFoundHttpException對象,該ultimat ely在Symfony內部觸發404 HTTP響應。「

那麼爲什麼我不能得到相同的行爲?有什麼我失蹤?

我正在使用master分支。

編輯:這是我的security.yml文件,我使用FOSUserBundle和FOSFacebookBundle:

security: 
providers: 
    chain_provider: 
     chain: 
      providers: [fos_userbundle, my_fos_facebook_provider] 
    fos_userbundle: 
     id: fos_user.user_manager 
    my_fos_facebook_provider: 
     id: my.facebook.user 

encoders: 
    "FOS\UserBundle\Model\UserInterface": sha512 

firewalls: 
    public: 
     pattern: ^/ 
     fos_facebook: 
      app_url: "http://apps.facebook.com/***/" 
      server_url: "http://localhost/facebookApp/" 
      login_path: /login 
      check_path: /checkFb 
      default_target_path:/
      provider: chain_provider 
     form_login: 
      login_path: /login 
      check_path: /login_check 
      provider: chain_provider 
      remember_me: true 
      csrf_provider: form.csrf_provider 
     remember_me: 
      key:   %secret% 
     anonymous: true 
     logout: true 
    login:           
     pattern: ^/(login$|register|resetting) 
     anonymous: true 

role_hierarchy: 
    ROLE_ADMIN:  ROLE_ADMIN 
    ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALOOW_TO_SWITCH] 
    ROLE_USER:  ROLE_USER 

access_control: 
    - { path: ^/, role: [IS_AUTHENTICATED_ANONYMOUSLY] } 
    - { path: ^/secured/, role: [IS_AUTHENTICATED_FULLY] } # This is the route secured with fos_facebook 
    - { path: ^/facebook/,   role: [ROLE_FACEBOOK] } 

回答

0

有同樣的問題。請參閱https://github.com/symfony/symfony/issues/5320您可能在errorpage或layout.html.twig上調用了is_granted。閱讀Stof的答案如何解決這個問題。

+0

的確是這個問題!感謝您的幫助。現在,我的語言選擇器出現了另一個問題,它使用了哈希合併,但不知何故無法正常工作......但現在我明確指出,is_granted是第一個阻止其他問題的問題。 儘管如此,有些奇怪的是,在生產模式下顯示自定義錯誤頁面時,這些錯誤只是一個問題......除此之外,我的網站沒有問題。 – SylvainB

0

每STOF在https://github.com/symfony/symfony/issues/5320

「你避免調用is_granted錯誤頁面(或你這樣做,只有當app.user不爲空,在沒有令牌或令牌時可能會出現的是匿名的)......問題是路由器在防火牆之前運行,所以如果路由器因爲不匹配路由而引發異常,你的錯誤頁面不在防火牆後面(因爲它沒有被調用)。