2012-03-17 3 views
0

그래서 플래그를 지정하는 플래그 기능을 작성하고 사용자가 이미 특정 코멘트를 표시했는지 확인하기 위해 컨트롤러를 점검하고 있습니다. 문제는 모델에서이 작업을 수행 할 수 있다고 생각합니다.컨트롤러 대신 모델을 사용하여 사용자에 대한 데이터가 이미 존재하는지 확인합니다.

기능은 다음과 같습니다 그런

private function userAlreadyFlagged($userId, $commentId) { 
    $userAlreadyFlagged = $this->CommentsFlag->find('count', array(
     'conditions' => array('CommentsFlag.comment_id' => $commentId, 'CommentsFlag.user_id' => $userId) 
      )); 

    if ($userAlreadyFlagged > 0) { 
     return true; 
    } else { 
     return false; 
    } 
} 

나는 CommentsFlag 전류에 대한 flagComment

if (!$this->userAlreadyFlagged($userId, $commentId)) { 
    if ($this->CommentsFlag->save($this->request->data)) { 
     $message = array('response' => 'success'); 
    } 
} else { 
    $message = array('response' => 'alreadyFlagged'); 
}​ 

내 모델이라는 컨트롤러 내에서 또 다른 함수가 내 users 테이블을 연결 한 :

var $name = 'CommentsFlag'; 
var $belongsTo = array(
    'User' => array(
     'className' => 'User' 
    ) 
); 

내가 어떻게 시작할 수 있는지 궁금합니다. 지금부터는 모델에서 이와 같은 것들이 있습니다. 왜냐하면이 코드는 모델에 더 적합 할 것이기 때문입니다.

+0

왜 비공개입니까? 첫째, 프레임 워크 아이디어에 어긋나지 않도록 프로젝트의 메소드를 개인용 (보호 된 경우에만)해서는 안됩니다. 두 번째로 언젠가 컨트롤러에서 액세스하려고 할 수도 있습니다. 대중도 아무런 상처를 입지 않을 것입니다. 아마도 – mark

+0

그 컨트롤러 내에서만 호출되고 있었기 때문에 비공개로 만들었습니다. 이제 모델과 대중으로 옮겨졌습니다. –

답변

1

뚱뚱한 모델을 가지고있는 것이 좋습니다. 위 기능을 모델로 옮기는데 어떤 문제가 있습니까?

복사하는 모델 (CommentsFlag)로 기능하고 $this->find( 따라서

이 모델에서 기능 이상으로 호출하는 모든 $this->CommentsFlag->find(...로 교체, 당신은 사용할 수 있습니다 CommentsFlag의 컨트롤러에서

$this->CommentsFlag->userAlreadyFlagged()라고하면

또는 $this->User->CommentsFlag->userAlreadyFlagged() 사용자 컨트롤러에서 호출 한 경우

+0

니스, 고마워. 그렇다면 컨트롤러가 무엇을해야합니까? 이 중 일부는 모델에 들어갈 수 있습니까? http://pastebin.com/uYAupums –

관련 문제