我遇到了奇怪的情况。我有最新的本地文件服务器文件。当无效时,会出现“带错误的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不工作...和页面之间的唯一区别是这个缓存... +当我创建一个新的评论它没有任何缓存是不是这样的?它只接受来自缓存页面上的表单的数据...... *