저는 몇 주 후부터 CakePHP 프로젝트 개발을 시작했습니다. 처음부터 나는 콘트롤러 안의 코드의 양으로 고심하고 있었다. 컨트롤러는 대부분의 경우 모델보다 많은 코드 행을가집니다. "스키니 컨트롤러, 뚱뚱한 모델"이라는 표현을 알면 모델에 더 많은 코드를 넣을 수있는 방법을 찾기 위해 며칠을 찾고 있습니다.MVC : 어떤 코드가 모델에 속한가
이 시점에서 문제는 "어디에서 선을 그어야합니까?"입니다. 컨트롤러는 무엇을해야하며 모델은 무엇을해야합니까? 이것에 대한 몇 가지 질문/답변이 있습니다. 좀 더 실용적인 설명을 원합니다. 예를 들어 컨트롤러 아래에 함수가 있습니다. 이 코드의 일부는 반드시 모델로 옮겨 져야한다고 생각합니다. 그래서 제 질문은 모델로 이동할 수있는 부분과 컨트롤러에 남아있을 수있는 부분입니다.
/**
* Save the newly added contacts and family members.
*/
public function complete_contacts()
{
if ($this->request->is('post')) {
if (isset($this->data['FamilyMembers'])) {
$selected_user = $this->Session->read('selected_user');
$family_members = $this->data['FamilyMembers'];
$this->ContactsConnection->create();
foreach ($family_members as $family_member) {
// connection from current user to new user
$family_member['ContactsConnection']['contact_family_member_id'] = $selected_user['id'];
$family_member['ContactsConnection']['nickname'] = $selected_user['first_name'];
$this->ContactsConnection->saveAll($family_member);
// inverted connection from new user to current user
$inverted_connection['ContactsConnection']['family_member_id'] = $selected_user['id'];
$inverted_connection['ContactsConnection']['contact_family_member_id'] = $this->FamilyMember->inserted_id;
$inverted_connection['ContactsConnection']['nickname'] = $family_member['FamilyMember']['nickname'];
$this->ContactsConnection->saveAll($inverted_connection);
}
}
}
}
나는라는 FamilyMember 모델에서 함수를 만들어야합니다 "save_new_family_member ($의 family_member, $의 selected_user)"?
코드에서는 완벽하게 조작 된 POST 요청을 사용하여 FamilyMember 만 저장할 수 있습니다. 쉘 또는 테스트 케이스와 같은 다른 위치에서 FamilyMember를 만들고 싶다면 어떻게해야할까요? RESTful API 만 제공하는 대신 FamilyMember 모델에 적절한 API를 제공하는 것이 더 합리적 일 것입니다. :) – deizel
주석 주셔서 감사합니다, 나는 그것을 살펴 보겠습니다. –