2012-09-28 3 views
-1

그래서 CakePHP 프로젝트에 "좋아요"시스템을 추가하고 약간의 문제가 있습니다. 내가 Like ...를 추가하고 싶을 때 그것은 단지 일어나지 않는다."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에 ...

아무거나 있으십니까?

+0

save() 메소드보다 먼저 die() 함수를 호출하고 있습니다. 알고 계셨습니까? die() 함수는 현재 스크립트의 실행을 중지합니다. http://php.net/die – Josh

+0

죄송합니다, 수정 된 게시물, 깨끗한 코드에서'debug()','die()'와 함께 문제를 찾으려고했습니다 :) – Axiol

답변

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()); 
     } 
    } 
} 

희망이 있습니다.

+0

Nop 죄송합니다 :/(btw ,'create()'가 완전히 필요하지는 않습니다. 예를 들어,이 프로젝트의 다른 부분은 완벽하게 작동합니다. https://gist.github.com/3800742) – Axiol

+2

create()를 사용하는 것이 좋습니다. 그것을 사용하지 않으려 고하면, 언젠가 버그를 추적하기 어려운 엉덩이를 물고 돌아올 것입니다. – petervaz

관련 문제