我对通过 jQuery 进行的图像评论有疑问。当我发现动作被缓存时,当 jQuery 调用动作时,由于缓存,它不知道 sfGaurd 用户已通过身份验证,因此我无法在没有 user_id 的情况下插入评论(关系问题)
所以这是它的完成方式:
路由:
commentimage:
url: /commentimage/:image_id.:sf_format
class: sfDoctrineRoute
options: { model: imagecomments, type: object }
param: { module: profile, action: commentimage, sf_format: html }
requirements:
id: \d+
sf_method: [get, post]
sf_format: (?:html|js)
行动 :
public function executeCommentimage(sfWebRequest $request) {
$imgId = $request->getParameter('image_id');
$commentPost = $request->getParameter('comment');
$user_id = $this->getContext()->getUser()->getAttribute('user_id','','sfGuardSecurityUser');
$comment = new Imagecomments();
$comment->setComment($commentPost);
$comment->setImageId($imgId);
$comment->setProfileId($user_id);
$comment->setFirmbrandId(1);
$comment->setPublished(1);
$comment->save();
$this->setLayout(false);
}
模板/表格:
<form name="form" id="form<?php echo $photo->getId();?>" method="POST">
<input type="hidden" id="image_id" name="image_id" value="<?php echo $photo->getId();?>" />
<input type="text" id="comment" name="comment" value="" />
<button name="submit" class="submit botunlink">KOMENTIRAJ</button>
</form>
和 jQuery:
$(".submit").click(function(e){
e.preventDefault();
var parent = $(this).parent();
var imageId = get_numbers(parent.attr('id'));
var theexactForm = "#form"+imageId;
$(theexactForm).submit(function() {
alert($(this).serialize());
return false;
});
$.ajax({
data: $(theexactForm).serialize(),
url: 'http://partytime.hr/commentimage/'+imageId,
type: "POST",
success: function () {
$("#allComments"+imageId).html("");
$("#allComments"+imageId).load("http://partytime.hr/showimagecomments/"+imageId);
//alert('imageID||'+imageId+'Forma||'+theexactForm+'COMMENT:'+data);
},
complete: function() {
//$(".allComments").mCustomScrollbar();
}
});
return false;
});
当我登录并清除 symfony 缓存时它可以工作,但后来它不会工作,因为它无法更新 PROFILE_ID 因为缓存说它没有登录(这是我的结论)。
我怎样才能解决这个问题?