2010-06-03 5 views
2

블로그 엔진에 대한 CakePHP 튜토리얼을 각 게시물에 추가하여 구축하고 있습니다. 선택 상자를 통해 첨부해야하는 게시물을 선택하여 의견을 추가 할 수 있습니다. 나는 포스트 내의 "Add Comment"링크를 클릭하고 프로그램 적으로 형성된 포스트에 대한 연관성을 가질 수 있기를 원합니다. 내 comments_controller 내에서 add 메소드에 post_id를 전달할 수있는 방법이 확실하지 않습니다. 내 add 메서드의 본문은 자동 생성 된 스캐 폴드 코드입니다. add 메소드에 $ postId 인수를 추가하고 이것을 내 의견 모델의 post_id에 쓰는 것만 큼 쉽습니까? 내 제출 단추가 내 의견 추가보기를 클릭 할 때 추가 기능이 호출 될 것으로 예상하므로이 기능은 적절하지 않습니다.CakePHP 블로그 주석 시스템

감사합니다.

수정 - 현재 작업하고있는 코드를 추가했습니다. 그것은 단지 내 comments_controller에 add 메서드입니다.

function add($postid = null) {    
    if(!empty($this->data) { 
     $this->Comment->create();       
     $this->Comment->post_id = $postid; 
     if ($this->Comment->save($this->data)) { 
      $this->Session->setFlash(__('The Comment has been saved', true)); 
      $this->redirect(array('action' => 'index')); 
     } else { 
      $this->Session->setFlash(__('The Comment could not be saved. Please, 
              try again.', true)); 
     } 
    } 
    $this->set('post_id', $postid);  
    print_r($postid); 
} 

답변

3
function add($postid = null) {    
    if(!empty($this->data) { 
     $this->Comment->create();       
     $this->data['Comment']['post_id'] = $postid; // see how it needs to be? 
     ...then save the data... 
+0

이것은 내가 의미했던 것입니다! ;) –

+0

내가 할 때 경고 512 throw됩니다 "SQL 오류 : 1048 : 열 'post_id'null 일 수 없습니다." – Ryan

+0

농담 해? 물론 $ post_id = 을 제공해야합니다. – Sergei

0

다음
<?php echo $html->link('Add Comment', array('controller'=>'Comments','action'=>'add',$post->id)) ?> 

당신이 당신의 댓글 컨트롤러의 추가 방법이 유사

function add($postid){ 
    $this->data->Comment->post_id = $postid; 
    $this->data->Save(); 
} 

당신을 할 것입니다 수 있습니다, 같은 블로그 게시물의 하단에 링크를 만듭니다 그냥 괜찮을거야. 그렇다면 당신의 URL은 example.com/comments/add/3 일 것입니다. 코드를 두 번 확인하십시오. 아침에 제일 먼저 먹는 것이므로 우유가 없어져서 커피가 없습니다! ;)

+0

밀어 주셔서 감사합니다! 올바른 코드 줄을 읽어야합니다 : $ this-> Comment-> set ('post_id', $ postid); – Ryan

+0

COmments 컨트롤러에서 뷰로 만 밀어 넣을 경우에만. 컨트롤러에 게시 된 데이터를 처리 할 때 모든 것이 $ this-> data에서 액세스 할 수 있으므로 필요한 경우 직접 값을 덮어 쓸 수 있습니다. –

+0

나는 문제를 고쳤다는 생각이 약간 조숙했습니다. 당신이 추천하는 메소드와 다른 방법을 사용하여 값을 저장할 수있었습니다. 문자열 ($ this-> Comment-> post_id = '1';)을 쓰고 있습니다. $ postid 변수를 사용하면 0은 내 주석 테이블 항목의 post_id 필드에 기록됩니다. 이견있는 사람? print_r을 사용하여 $ postid가 add 함수에 전달한 것을 볼 수 있습니다. 이견있는 사람? – Ryan