1

我刚刚设置了清漆,并且在投入生产之前我已经在端口 8080 上做了一些测试。

我注意到,如果我在缓存页面上:

/**
 * @Cache(smaxage="10800")
 * @Route("/{_locale}/", name="homepage2", requirements={"_locale" = "en|fr"})
 * @Template()
 */
public function indexAction()
{
    return array();
}

我尝试通过包含的组件登录(不使用外部服务,但使用正常登录)ESI

    {% render "GamerCertifiedHomeBundle:Home:login" with {}, { 'standalone': true } %}

它最终将我重定向到一个没有样式且没有 URL 的页面上...:8080/_internal/secure/MyBundleHomeBundle:Home:login/none.html

Step1 截图/ Step2 截图

如果我回到主页,我已经登录了。

请问我该如何避免呢?

编辑 :

4

1 回答 1

1

在分析了聊天中的问题后,我发现_target_path为了安全,成功的重定向是通过以下方式在表单中生成的:

<input type="hidden" name="_target_path" value="{{ app.request.uri }}" />

并且由于这部分是使用独立视图呈现的 - 它具有特定的 uri(带_internal前缀)。

您可以通过为app.request.uri注入应用更改的逻辑来避免这种情况。

  1. 将其传递给控制器​​:

     {% render yourAction with {'uri': app.request.uri}, {'standalone': true} %}
    
  2. 在您的控制器中,只需将其传递给您的视图

     public function yourAction ($uri)
     {
         ...
         return array('uri' => $uri);
     }
    
  3. 在您的模板中使用它

      <input type="hidden" name="_target_path" value="{{ uri }}" />
    

享受吧!;)

于 2012-08-05T14:47:46.940 回答