문제

모범 사례가 진행되는 한 이것은 권장 되는가? 항목 및 프로파일 컨트롤러에서 호출 해야하는 댓글 컨트롤러 + 모델이 있습니다. 주석 컨트롤러는 주석 모델을 자동으로로드합니다.

항목 및 프로필 컨트롤러에서 댓글 컨트롤러를 직접 호출하는 것이 허용됩니까, 아니면 대신 주석 모델을 호출하는 "모범 사례"방법입니까?

Kohana에서는보기가 싱글 톤 클래스가 아니기 때문에 다른 컨트롤러 내의 컨트롤러를 호출하려면 두 개의 조회수로 끝납니다. 반면에 모델을 호출하려면 항목 및 프로파일 컨트롤러 내에 중복 코드가있을 것입니다.

MVC 전문가 모두 도와줍니다! =))

도움이 되었습니까?

해결책

일반적으로 나는 "지방 모델"접근법을 위해 갈 것입니다.

복제에 대해 정말로 걱정하는 코드가 확실하지 않습니다.

이것을 할 수있는 몇 가지 방법이 있습니다.

첫 번째 방법 : - 의견 모델을 조사하여 의견을 반환하십시오. - 댓글 데이터를 귀하의 관점에 전달하십시오. - 뷰에서 댓글을 렌더링하여 뷰 도우미를 사용합니다.

두 번째 방법 : - 당신의 견해가 당신의 모델과 직접 대화 할 수없는 이유가 없다는 것을 인식하십시오. - 모델에서 직접 필요한 데이터를 가져오고 렌더링하는 View 도우미를 작성하십시오.

나는 두 번째 방법을 선호합니다. 어떤 사람들은 자신의 뷰 레이어가 모델과 대화하는 데 문제가 있지만 (읽기 전용 방식으로!), 나는 그들 중 하나가 아닙니다.

다른 팁

Kohana 3을 사용하는 경우 HMVC 기능의 혜택을 누릴 수 있습니다. 컨트롤러 내에서 컨트롤러를 실행할 수 있습니다.

http://forum.kohanaphp.com/comments.php?discussionid=2768

위의 링크에서 몇 가지 예를 확인하십시오

컨트롤러가 반환하는 것에 달려 있다고 말하고 싶습니다.

컨트롤러가 DTOS/모델을 반환 할 수있는 경우 컨트롤러를 호출하는 것이 좋습니다.

컨트롤러는 기능에 대한 엄격하고 문서화되고 희망적으로 안정적인 진입 점을 정의합니다. 따라서 컨트롤러 메소드의 서명을 변경하지 않는 한 주석 구현을 완전히 무시하거나 마음대로 변경할 수 있습니다.

그러나 컨트롤러가 원시 데이터를 반환 할 수없는 경우 HTML (또는 기타 마크 업)을 대가로 받고 있기 때문에 분명히 다릅니다. 즉, HTML을 원하는보기에 직접 파이프하거나 데이터를 추출해야합니다. 둘 다 나쁜 생각입니다.

RAW HTML을 배관하면 주석보기를 변경하면 프로파일 모듈에 대한 주석 표시가 필연적으로 변경됨을 의미합니다. 이것이 당신이 원하는 것일 수도 있지만, 나는 유연성을 위해 갈 것입니다.

이제 데이터를 원한다면 뷰가 반환 된 마크 업에서 데이터를 추출해야합니다.

정적 메소드를 호출하려는 경우 기능을 직접 호출 할 수 있습니다. 예를 들어:

class Controller_User extends Controller {
    public static function format_user($user){
        return array("data" => $user->getData());
    }
}

class Controller_Foo extends Controller {
    public function action_index(){
        $user = get_user_data_some_how();
        $user_data = Controller_User::format_user($user)
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top