2012-02-11 99 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');}