죄송합니다. 무엇이 일반적인 제목입니까? 나는 타이틀에서 최고가 아니야.CakePHP에서 MVC 프레임 워크를 깨지 않고 어떻게해야합니까?
어쨌든 케이크가 데이터를 전달하는 방식 (해시)은이 질문을해야 할 필요가있는 이유입니다. 변수/obj를 컨트롤러에서 뷰로 전달할 때 배열/사전이 아닌 (예 : $ duck-> quack()) 질문을 할 수있는 개체가있었습니다 (예 : $ duck [ Duck '] ['quack '] == true) 이것은 쉬울 것입니다.
내 앱에있는 것은 사용자 x가 소유 할 수있는 항목 목록입니다. 특정보기에서는 데이터베이스/앱 (즉, 페이지 매김)의 모든 항목을 표시하고 로그인 한 사용자가 소유하고 있는지 여부를 알아야하는 각 항목에 대해 표시합니다. 이 질문에 답하기 위해 모델 내부에서 수행되는 쿼리 (복잡한 HABTM 관계로 인해)가 필요합니다. 다시 말해서, My Item 모델은 isOwnedByUser ($ user_id, $ item_id) 함수를 가지고 있는데, 이것은 사용자가 소유하고 있다면 참이다. 보기에서이 함수를 호출하고 싶습니다.
당연히 이것이 MVC 프레임 워크를 위반하고 있지만 어떻게해야할지 모르겠습니다.
아이디어 1 :
는 도우미 안에이 작업을 수행합니다 :
App:Import('Model','Item');
$item = new Item();
$item->isOwnedByUser($user_id,$item_id);
하고 뷰에서 도우미를 호출 (하고 $ ITEM_ID 전달 물론 $ USER_ID 나는 네 생각을했다). 그러나 이것은 MVC 프레임 워크에 위배됩니다.
아이디어 2 :
이 item_controller.php 내부 조치를 생성하고 requestAction를 사용하여보기에서 작업을 호출(). 그러나 나는 내 문제에 대한 해결책을 looking을했지만 그들에 따라 두 아이디어 그래서 두 개 더 솔루션을 함께했다 나쁜 때 내가 찾은 지금이 두 가지 아이디어 heard that this was extremeley inefficent
:
아이디어 3 :
페이지가 매겨진 데이터를보기로 되돌릴 때 모든 항목에 'user_id'키가 있는지 확인하여 로그인 한 사용자의 ID와 비교하여 뷰의 키를 확인하여 항목을 소유하고 있는지 확인할 수 있습니다. . 그러나 이것은 a) 페이지 매기기를 다시 작성해야한다. b) 특히 특정보기 (검색)에 대해 매우 추악한 쿼리, c) 전반적인 추악함 및 느려짐.
뷰는 항목이 사용자가 소유하는 경우, 그냥 컨트롤러에서 다른 배열을 따라 통과거야 알 필요가 때마다 ALL을 포함 : 그래서
아이디어 (4)는이 아이디어를 포기하기로 결정 사용자가 소유 한 항목이며보기에서 사용자가 해당 항목을 소유하고 있는지 확인하기 위해 in_array()를 사용할 수 있습니다. 물론이 문제는 명백합니다. 사용자가 많은 항목을 가지고 있다면?
요약하면 나는 이것에 집착하고 여기에서 어디로 가야하는지 전혀 모른다. 그리고 나는 모든 도움에 감사 할 것이다! 감사!
또한 Cake가 HABTM 관계를 처리하는 방식도 짜증 스럽다 고 덧붙여 야합니다. 정말 안됐다. 그러나 그것은이 질문과 아무 관련이 없습니다. – encee