문제

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

댓글 테이블에는 각 사람의 댓글이 없거나 더 많습니다.그래서 나는 Comment 모델을 가지고 있고, 내 Person 모델과 Comment 모델에 대한 hasMany 연관을 가지고 있습니다.보기가 잘 작동하고 있습니다.

제 질문은 개인 보기 페이지에 댓글 추가 버튼이 있다는 것입니다.어떻게 작동해야 하나요?개인 컨트롤러가 댓글 레코드에 대한 저장을 포함해야 할까요, 아니면 댓글 컨트롤러를 만들고 개인에 대한 연결 외부에 저장해야 할까요?

저는 PHP 사용 경험이 있지만 Cake는 처음 접합니다.

어떤 아이디어가 있나요?나는 명백한 것을 놓치고 있다고 생각하지만 무엇을 해야할지 모르겠습니다.이랬으면 좋겠다는 생각이 든다 PHP 주석 추가 양식에서 Person_id를 참조하여 별도의 컨트롤러를 사용하지만, 주석은 개인 레코드의 컨텍스트에서만 편집되므로 간단한 모델에 대한 컨트롤러를 갖는 것은 쓸모가 없다고 생각합니다.

아이디어?

도움이 되었습니까?

해결책

저는 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 애플리케이션이 생성되므로 브라우저에서 /comments로 이동하면 다음을 수행할 수 있습니다. 반응하다, 아르 자형에드, pdate 및 댓글을 삭제하세요.따라서 보시다시피 여기에는 별로 관련이 없습니다.필요한 것은 데이터베이스 테이블과 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());
    }
  }
}

따라서 기본적으로 Cake가 자체적으로 추가하는 표준 추가 작업을 덮어씁니다.이제 이해가 되기를 바랍니다.또한 /comments/add/ID를 선택하도록 경로가 필요할 수도 있습니다.이 부분에 대해서는 잘 모르겠습니다.:)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top