2012-02-11 2 views
0

jQuery 함수 .load()을 사용하여 CakePHP ($this->elements())의 요소를로드하려고 시도하지만 prolems가 해당 요소의 경로를 알아 냈습니다. 이 사이트에서 다른 주제를 발견했지만 정말 도움이되지 못했습니다.CakePHP 요소의 jQuery load() 경로

루트가 /webroot이 아닙니까? 나는 .load('../View/Elements/Summoners/comments.ctp');과 몇 가지 다른 경로를 시도했지만 제대로 작동하지 않았습니다./

+2

당신은 jQuery를하고 PHP 코드를 혼합 할 수 없습니다. 엘리먼트를 렌더링하는 jQuery'.load()'함수를 사용하여 호출되는 액션/뷰를 만들어야합니다. –

+1

정확히 jQuery를 사용하여 요소를로드하려는 이유가 무엇입니까? 왜 '$ this-> Element ('elementName ');'을 단순히보기가 아닌 옵션으로 두는 것일까 요? – Oldskool

답변

3

요소를 jQuery에서로드하지 않고 요소를로드 할 컨트롤러 메서드를 호출합니다. 예를 들어. jQuery를에 같은 전화 : 다음 ajax_action에 해당하는 컨트롤러

.load(/controller/ajax_action/); 

을, 당신은과 같이 요소를이 호출하는 뷰를로드하거나로드 할 수 있습니다 :

public function ajax_action() { 
    $this->renderElement('/elements/element_name.ctp'); 
} 
+0

명확한 설명 : 지정된 jQuery "path"는 파일 시스템 경로가 아닌 URL입니다. 이것이 OP가 혼란스러워하는 곳입니다. – Chad

+0

@Chad : OP 작성자가 여기서 언급 한 내용을 깨닫지 않고 "직접 요소를로드하지 않는 이유"를 생각했습니다. 나는 모든 의도와 목적을 위해 OP가 Webroot의 elements 디렉토리에 대한 심볼릭 링크를 만들고 그렇게로드 할 수 있다고 생각합니다. 그러나 그것은 아마도 좋은 생각이 아닙니다. –

+0

그는 PHP 코드를 클라이언트 측으로 가져 가면 안됩니다. 당신의 솔루션은 그가 파싱 된 PHP (출력 된 HTML)를 제공 할 것이고, 실제 PHP 소스를 얻지는 않습니다. PHP 소스를'webroot'로 symlink하는 것은 나쁜 아이디어 일 것입니다. – Chad

1

코드를 위 작동하지 않습니다

.load(/controller/ajax_action/); 

은 다음과 같아야합니다

.load('/controller/ajax_action/'); 

... 그리고

public function ajax_action() { 
$this->renderElement('/elements/element_name.ctp');} 

해야 ...

public function ajax_action() { 
$this->render('/elements/element_name');}