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を更新できないため、後で機能しなくなります(これが私の結論です)。
どうすればこれを修正できますか?