2016-10-07 4 views
0

나는 내 자신의 CakePHP 3 구성 요소를 만들었습니다. 나는 컨트롤러에 $this->loadComponent()을 사용하고 있는데 잘 동작한다. 그러나 나는 또한 loadComponent() 메서드가없는 셀에 포함시켜야합니다.CakePHP 3 셀의 구성 요소

어떻게 구성 요소를 셀에 포함시킬 수 있습니까?

답변

2

여기에 구성 요소를 사용하지 마십시오. 셀은 셀이기 때문에 컨트롤러가 아닙니다. 셀은 컨트롤러에 대해 알지 못하기 때문에 소스를 확인하십시오. http://api.cakephp.org/3.3/source-class-Cake.View.Cell.html

셀 내부의 구성 요소를 필요로하거나 사용하고 싶다면 구조가 잘못 설계되었다고 생각합니다. 코드를 공유하는 것을 "잊었으므로"더 이상의 조언을 제공 할 수는 없습니다. 앱 아키텍처를 리팩터링하려면 무엇이든 시도하십시오.

+0

장바구니가있는 셀이 있습니다. 제품 카탈로그 컨트롤러도 있습니다. 이 두 위치 모두 제품 가격 (예 : 사용자가 로그인했는지 확인하고 가격 그룹 중 하나를 선택, 할인 관리 등)을 계산해야하므로 제 생각에는 구성 요소가 여기에서 잘됩니다. 어떤 대안을 제안 하시겠습니까? 이 계산을 제품 모델로 옮겨야합니까? – Rytis

+1

음, @burzum, 설명서에는 세포가 미니 컨트롤러라고 나와 있습니다. 따라서 구성 요소를 사용하면 유용 할 수 있습니다. – arilia

+0

@arilla 나는 동의하지 않는다, 나는 책이 갱신되어야한다고 생각한다. 이것은 오해의 소지가있다. 은유 적이지만 기술적으로 IMO가 올바르지 않습니다. 컨트롤러에 대한 액세스 권한이없는 코드를 확인하십시오. 셀 내부의 구성 요소를 사용하면 MVC 위반 IMO가 발생하며 아키텍처가 잘 수행되지 않았 음을 나타내는 강력한 표시기가됩니다. 나는 hes가하는 일이 모델 레이어 클래스와 메소드에서 더 잘 수행된다고 생각한다. 아마도 데이터 조작 일 가능성이 높기 때문이다. 당신이 뭔가 잘못된 일을하고있는 내부에서 데이터 조작을하면 대부분이 requestAction() 대신에 셀을 보게됩니다. – burzum