2008-09-21 5 views
2

간단한 CakePHP site (1.2)이 있습니다. 사람을 편집하고 저장할 수있는 페이지가 있습니다. 그래서 저는 Person 모델과 컨트롤러를 가지고 있습니다.CakePHP의 "sub"모델에 정보 저장

각 사람은 주석 테이블에 하나 이상의 의견이 없습니다. 그래서 저는 Comment 모델을 가지고 있고, Comments 모델에 대한 Person 모델에 hasMany 연관이 있습니다. 보기가 잘 작동합니다.

제 질문은 사람 페이지의보기에 댓글 추가 버튼이 있습니다. 이것이 어떻게 작동해야합니까? Person 컨트롤러가 주석 레코드에 대한 저장을 포함하거나 주석 컨트롤러를 작성하여 사람에 대한 연관성 외부에 저장해야합니까?

저는 PHP에 익숙하지만 Cake의 새로운 것을 알고 있습니다.

아이디어가 있으십니까? 나는 명백한 무엇인가를 놓치고 있다고 생각하지만, 나는 무엇을 해야할지 잘 모릅니다. 이 느낌이 PHP 인 것처럼 느껴졌습니다. 내 코멘트 양식에 Person_id를 참조하여 별도의 컨트롤러를 사용하지만 단순한 컨트롤러에 대한 느낌이 들었습니다. 주석은 Person 컨텍스트에서만 편집되므로 쓸모가 없습니다. 기록.

아이디어가 있으십니까?

답변

1

저는 CakePHP 전문가는 아니지만, 여전히 독자적인 컨트롤러를 가지고 있다고 생각합니다. 내가 CakePHP 블로그 튜토리얼 중 하나를 할 때 기억하는 것은 코멘트 모델에서 코멘트와 게시물을 연결해야한다는 것입니다.

class Comment extends AppModel 
{ 
    var $name = ‘Comment’; 
    var $belongsTo = array(‘Person’); 
} 

을 그리고 당신이 컨트롤러 (comments_controller.php)가 필요합니다 :

class CommentsController extends AppController 
{ 
    var $name = ‘Comments’; 
    var $scaffold; 
} 

일부 SQL :

CREATE TABLE comments (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    author VARCHAR(50), 
    comment TEXT, 
    person_id INT, 
    created DATETIME DEFAULT NULL, 
    modified DATETIME DEFAULT NULL 
); 

$scaffold이 만듭니다 이것은 내가 그것에서이 코드의 일부입니다 CRUD 응용 프로그램이므로 브라우저에서/의견을 입력 할 때 c, r ead, u pdate 및 d elete 코멘트. 보시다시피 여기에는별로 관련이 없습니다. 필요한 것은 데이터베이스 테이블과 person_id를 제공하는 약간의 논리뿐입니다.

<h2>Add comment</h2> 
<?php 
echo $form->create(‘Comment’, array(‘action’=>‘add/’.$person[‘Person’][‘id’]); 
echo $form->input(‘author’); 
echo $form->input(‘content’); 
echo $form->submit(‘Add comment’); 
echo $form->end(); 
?> 

그리고 당신의 CommentsController의 :

function add($id = NULL) { 
    if (!empty($this->data)) { 
    $this->data['Comment']['person_id'] = $id; 
    $this->data['Comment']['id'] = ''; 
    if ($this->Comment->save($this->data)) { 
     $this->Session->setFlash('Commented added'); 
     $this->redirect($this->referer()); 
    } 
    } 
} 

그래서 당신은 기본적으로 표준 작업을 추가 덮어 쓰기, 케이크는 그 자체로 추가

는 (당신의 사람 /보기) 주석을 저장합니다. 희망은 지금 이해된다. 또한 경로가 필요하므로/comments/add/ID를 선택하십시오. 나는이 부분에 대해 모른다. :)

+0

감사합니다. 나는 이것을 많이 이해한다. 내가 한 질문은 내 코멘트 컨트롤러에서 person_id를 참조하는 방법입니다. – Justin

+0

나는이 예제를 확장했다. – Till