Symfony2 esi缓存表单不起作用

时间:2013-11-16 10:34:55

标签: forms symfony caching esi

我遇到了奇怪的情况。我有最新的本地文件服务器文件。当无效时,会出现“带错误的flash消息”:

if ($form->isValid() && $this->checkLastComment($commentRepository,$user,$status, $comment)) {

我有两个网址。第一个/主页(工作)为每个人加载状态与评论但我没有缓存页面 然后我有/建议的网址,我加载状态与评论但使用

    $response->setPublic();
    $response->setSharedMaxAge(3600);

I CACHE THE PAGE因为它对所有用户都一样。

但它奇怪,因为在本地机器上(缓存是我测试的)当我想在prod,dev env上创建评论时,一切正常。

在服务器上它运行正常,当我在dev env。(缓存关闭)但是当我尝试发布关于prod env的评论。我收到上述条件的错误flash消息...

WTF?请问哪里可以泄漏?我不知道。

公共esi缓存以某种方式破坏了我的表单?要么...?

一位朋友可以在那里发表评论......另一位不是......很奇怪......我不是之前但是在缓存之后我再次能够......

编辑:

午饭后我再次尝试了,我无法发表评论...... wtf ..

这是我在chrome中看到的标题:(发送)

CommentForm[comment]:gllll
status_id:65084
CommentForm[_token]:4858119eccbc91da6219d4cbaa1b6c2e79dbd56a
comment_id:0

使用此jquery代码:

    var url=Routing.generate('create_comment', {"comment_id": comment_id_value, "status_id": status_id_value})+'.json';
    $.post(url, $this.serialize(), function(data) {

到这个控制器:

public function createAction(Request $request, $comment_id=0, $status_id)
{
    // first CHECK if user exists
    $user=$this->getUser();        
    if ($user) {         
        $em=$this->getDoctrine()->getManager();
        // GET REPOSITORIES
        $statusRepository=$em->getRepository('WallBundle:Status');
        $commentRepository=$em->getRepository('WallBundle:Comments');
        $notifyRepository=$em->getRepository('NotifyBundle:Notify');
        $userRepository=$em->getRepository('UserBundle:User');
        // GET SM
        $SM=$this->get('status_manager');
        // GET status by ID
        $status=$statusRepository->find($status_id);
        // CHECK if this status exists
        if ($status) {
            $targetUser=$status->getUser();
            if ($request->isMethod('POST') && ($this->getRequest()->getRequestFormat() == 'json')) {
                if ($comment_id==0 || !$cE) {
                    $cE = new Comments();
                }

                $form = $this->createForm(new CommentFormType(), $cE);

                $form->bind($request);                    
                     $comment=$form->getData()->getComment();

                 if ($form->isValid() && $this->checkLastComment($commentRepository,$user,$status, $comment)) { 

和checkLastComment函数

    public function checkLastComment($commentRepository, User $user,Status $status, $comment)
{                    
     // check if last comment was more than 10s ago
     $lastCommentQueryArray=$commentRepository->getLastComment($user, $status); 
     $lastCommentTime=0;
     $lastCommentContent='';
     foreach ($lastCommentQueryArray as $lastComment) {
         $lastCommentTime   =$lastComment['time'];
         $lastCommentContent=$lastComment['comment'];
     }

     if (($lastCommentTime+10>=time()) && (trim($lastCommentContent)==trim($comment))) {
         return false;
     } 
     else {
         return true;
     }
}

* 但是bug不应该在代码中,因为我在整个网络上使用这种技术,一切运行良好...只在这个特别的页面ITS不工作...和页面之间的唯一区别是这个缓存... +当我创建一个新的评论它没有任何缓存是不是这样的?它只接受来自缓存页面上的表单的数据...... *

0 个答案:

没有答案