2012-02-11 50 views
0

我嘗試從CakePHP($this->elements())加載元素與jQuery函數​​,但我有問題找出這些元素的路徑。我在這個網站上發現了其他一些話題,但他們真的沒有幫助我。CakePHP元素的jQuery加載()路徑()

根是/webroot不是嗎?我試過.load('../View/Elements/Summoners/comments.ctp');和其他一些路徑,但他們沒有解決:/

+2

不能混合jQuery和PHP代碼。您需要製作一個使用jQuery'.load()'函數調用的動作/視圖,該函數輪流呈現您的元素。 – 2012-02-11 20:24:07

+1

爲什麼你要使用jQuery來加載元素?爲什麼簡單地在你的視圖中放置'$ this-> Element('elementName');'不是一個選項? – Oldskool 2012-02-12 16:34:30

回答

3

不要從jQuery加載元素,而是調用一個控制器方法來加載元素。例如。 jQuery中調用類似:

.load(/controller/ajax_action/); 

然後在對應於ajax_action控制器,你可以讓它加載它正在調用的視圖或加載元件像這樣:

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

只是一個澄清的說明:指定的jQuery「路徑」是一個URL *不*文件系統路徑。這是OP看起來很困惑的地方。 – Chad 2012-02-12 21:12:05

+0

@Chad:我認爲OP認爲「因爲我已經有了元素爲什麼不直接加載它」而沒有意識到你在這裏提到的東西。我想所有的意圖和目的,OP可以創建一個符號鏈接到webroot中的elements目錄並加載它們。但它可能不是一個好主意。 – 2012-02-12 21:22:01

+0

他不應該像以前一樣將PHP代碼拉入客戶端。你的解決方案會給他解析PHP(輸出的HTML),這是他應該做的,而不是得到實際的PHP源代碼。因此,將PHP源代碼鏈接到'webroot'會是一個糟糕的想法。 – Chad 2012-02-12 22:55:04

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');}