2013-04-30 4 views
0

며칠 전 의심의 여지가 있습니다. 나는 잘 설명하고, 나의 영어를 유감스럽게 생각한다.동일한 페이지에 컨트롤러 한 개를 두 번 표시하는 방법 CAKEPHP

저는 CakePHP로 작업하고 있습니다. 글쎄, 자신 만의 뷰가있는 컨트롤러가 있습니다. 어떻게됩니까 : 컨트롤러에 두 가지 기능이 있습니다. 하나의 요소를 마우스로 클릭하면 이 경우, 구글 차트 파이 차트) 내보기 "하나", 나는 (보기 "두"렌더링) 컨트롤러의 다른 기능을 실행하려면 같은보기에서 하나,하지만, 같은 페이지에서.

나는 원형 차트에서 클릭을 처리하는 방법을 알고 있지만, 이것은 문제가 아닙니다. 문제는 내가보기에 한 번 클릭하면 다른보기로 이동하는보기를 볼 수 유지하는 방법입니다. 그래서 내 말은, 나는 결국, 두 개의보기, 하나와 두 개의 페이지 기본값이 각각의 컨트롤러에서 자신의 기능을 가지고 싶어, 텍스트, 테이블과 같은 간단한보기가 아니야 ...

나는 몇몇 해결책을 시도했다 : requestaction, javascript의 href, 조수 ... 그러나 나는 해결책을 얻지 않는다.

나를 도와 주시면 매우 감사하겠습니다! 어떤 질문이라도 나에게 질문해라. 그러면 나는 잘 설명하고, 당신이 나의 영어를 이해하기를 바랄 수있다!

인사말!

+1

잘 모르겠습니다. 리디렉션 기능을 사용해 보셨습니까? http://api.cakephp.org/2.3/class-Controller.html#_redirect –

+0

감사합니다! 그게 정확히 내가 원하는 건 아니야, –

답변

1

당신이 할 수있는 유일한 방법은보기 중 하나를 사용하여 요소를 만든 다음이 요소를 다른보기에 추가하는 것입니다. 보기에 요소를 $his->element('ElementName');으로 간단히 추가 할 수 있습니다. cakephp의 요소에 대한 자세한 내용은 http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Views.html을 참조하십시오.

div에 $this->element('name');을 넣고 ajax를 사용하면 아마도 i 추측 함수를 호출 할 수 있습니다. 따라서 컨트롤러 함수에서 다음과 같이 작성하십시오 :

$this->set('set your variables for the elements here'); 
$view = new View($this, false); 
$content = $view->element('my-element'); 
json_encode($content); 

그리고이 응답을 아약스 호출의 성공 부분에서 찾으십시오.

success: function (data){ 
    $("#div_id").html(data); 
} 

나는 희망이 있습니다.

+0

대단히 감사합니다! 그래서 그것은 유일한 해결책입니까? 나는 요소에 대해 안다. 그러나 나는 그들이 이것을 잘하는 지 안다. 나는 해결책이라고 생각한다. 그렇다. 나는 이것을 할 수있다. 그러나 내가 이것을한다면, 컨트롤러의 두 번째 뷰의 기능에서 나온 모든 논리는 요소가 없을 것이다. 또 다른 질문 :이 방법으로, 나는 "$ this-> element ('ElementName'); 줄을 사용할 수 없다." 올바른 방식으로 자바 스크립트 (내가 마우스 클릭을 치료할 때), 어떤 생각이 어떻게 할 수 있습니까? 감사합니다 –

+0

나는 당신의 필요에 따라 대답을 업데이 트했습니다. – Preetam

+0

@Preetam 두 번째보기에 대해 Ajax 호출을 작성한 이유를 요소로 렌더링해야하는 이유는 무엇입니까? 직접 렌더링 할 수 있습니다. 그러나 실제로 마우스 클릭이 끝나면 두 번째 함수에 AJAX 호출을 사용하는 것이 올바른 방법입니다. – Chris

관련 문제