-1

それで、私は自分の CakePHP プロジェクトに「いいね」システムを追加していますが、少し問題があります。Likeを追加したいとき...それは単に起こりません。これが私が持っているものです:

<?php 
  echo $this->Form->create("Like", array("url" => array("controller" => "likes", "action" => "like")));
  echo $this->Form->hidden("user_id",array(
    "value" => AuthComponent::user("id")
  ));
  echo $this->Form->hidden("post_id",array(
    "value" => $post["Post"]["id"]
  ));
  echo $this->Form->end();

  echo $this->Html->link(
    "<li><i class='icon-heart icon-large'></i> ".count($post["Like"])." likes</li>",
    "",
    array("escape" => false, "onclick" => "document.getElementById('LikeViewForm').submit();")
  );
?>

そして、ここにコントローラーがあります:

<?php class LikesController extends AppController{

  function like() {
    $user_id = $this->Auth->user("id");
    if(!$user_id){
      $this->redirect("/");
      die();
    }
    if ($this->request->is("post")) {
      $d = $this->request->data;         
      $d["Like"]["id"] = null;
      if($this->Like->save($d,true,array("post_id","user_id"))){
        $this->redirect($this->referer());
      }
    }
  }

}

そして、リンクをクリックすると、ページが正しく更新されるので、フォームは送信されたと思いますが、DB には何も新しいものはありません...

推測はありますか?

4

1 に答える 1

0

新しいレコードの場合は、create()最初に使用する必要があります。これを試して:

function like() {
    $user_id = $this->Auth->user("id");

    if (!$user_id) {
        $this->redirect("/");
        die();
    }

    if ($this->request->is("post")) {
        $this->Like->create();
        if ($this->Like->save($this->request->data, true, array("post_id", "user_id"))) {
            $this->redirect($this->referer());
        }
    }
}

お役に立てれば。

于 2012-09-28T15:57:23.340 に答える