2011-03-06 5 views
0

위젯을 기반으로 웹 사이트를 구축 중입니다. 몇 가지 메소드, 모델 및 뷰가있는 일반적인 WidgetInstancesController 클래스가 있습니다. 이제이 클래스를 확장 할 수 있는지 알고 싶습니다. 즉, 각 위젯은 WidgetInstancesController 클래스를 확장하는 또 다른 클래스 여야합니다. 위젯 클래스를 app/widgets/ 아래에 저장하고 싶습니다. 또한 이러한 위젯에는 특정 모델이 없으므로 (부모 WidgetInstance 모델을 사용하므로) 특정보기가있을 수 있습니다.CakePHP 확장 컨트롤러 (전용)

어떻게하면 좋을지 제안 해 주시면 감사하겠습니다.

+0

문제없이 확장 할 수 있지만 컨트롤러는/app/컨트롤러에 있어야합니다. 위젯을 도우미 또는 구성 요소로 생각하는 것이 좋습니다. 컨트롤러 데이터를 덮어 쓸 필요가 있기 때문에 도우미가 분명히하지 않습니다. – JohnP

+0

구성 요소 ... 잘 모르겠지만 요청 당 수십 개의 구성 요소를로드하는 것은 너무 어렵습니다 (사용자가 활성화 한 위젯 수에 따라 다름). 아니면'app/controllers/widgets /'에 위젯이있는 폴더를 만들고 부모 클래스 (WidgetInstancesControllers)를 확장하면됩니까? 또한 위젯의 컨트롤러에서 작업을로드하거나 호출하는 방법은 무엇입니까? 확장되는 클래스에서 모델 데이터에 액세스 할 수 있습니까? – linkyndy

+0

구성 요소를 '필요한 경우'에로드하여 모든 조명을 유지할 수 있습니다. 전화를 건 컨트롤러의 인스턴스를 얻었으므로 모델에 액세스 할 수 있습니다. – JohnP

답변

1

구성 요소로 구축하는 것이 좋지만 다른 방법으로도 구현할 수 있습니다.

내가 애드온 모듈로 CMS를 구축 한 것과 비슷한 일을해야했습니다. 논리적으로 작동하게하려면 MVC를 조금만 돌린 후 씬 컨트롤러로 이동해야했습니다. 본질적으로 프런트 엔드 모듈 논리는 모델 수준에서 전적으로 요소로 연결된 뷰와 함께 포함되었습니다. 모듈 도우미가 공용 프런트 엔드에서 모듈을 가져 와서 표시했습니다. 백엔드는 일반적인 fatness 컨트롤러를 사용하여 MVC를 통해 통상적으로 처리됩니다.

모델이 놀랍게도 가볍고 요소가 모두 유용성을 꿈꾸게 만들었습니다.

+0

저는 MVC가 처음인데, 위젯이 컴포넌트 일 경우 위젯이 어떻게 작동하는지 조금 설명 할 수 있습니까? 내가 지금까지 이해 한 바에 따르면, 컴포넌트는 현재 컨트롤러에 추가 메서드를 추가합니다. 맞습니까? 예를 들어, 구성 요소에서 상위 컨트롤러의 메서드 abc()를 확장해야하는 경우 어떻게해야합니까? 또한 ** 컨트롤러 메소드가 아닌 ** 컴포넌트 메소드 만 ** 사용할 수 있습니까? 그리고 각 위젯에 대한 뷰를 개인화하고 싶다면 어떻게해야하며 어디에 배치해야합니까? 또는보기 대신에 도우미를 만드는 것이 좋습니다. 나는 조금 혼란스럽고, 더 많은 도움을 주실 것입니다. :) – linkyndy

+0

나는 지금 플러그인에 대해 읽었습니다. 그들이 내 사건에 효과가 있니? 아니면 여러 컨트롤러 메소드를 덮어 쓰기에 너무 많은가? 당신의 도움을 주셔서 감사합니다! – linkyndy

+1

구성 요소 소개 페이지에서 다 밝히고 있습니다. http://book.cakephp.org/view/994/ 컨트롤러에 실제로 메소드를 추가하지 않고 컨트롤러 내에서 다른 클래스를 사용할 수있게 만들고 있습니다. . 동일하거나 다른 응용 프로그램의 다른 곳에서 자체 포함 된 논리 덩어리를 다시 사용할 수있는 편리한 방법입니다. 나는 개인적으로 플러그인을 사용하지 않는다. 귀찮아서, 내가 기대했던대로 작동하지 않으며, 애플리케이션의 다른 측면을 방해 할 수도있다. – Leo

관련 문제