Jquery和Cakephp,在哪里放文件/如何调用它?

时间:2010-07-19 22:50:15

标签: php jquery cakephp

我对此感到困惑,因为我找不到关于如何做到这一点的好文档,我在我的cakephp站点文件夹中有一个名为“index”的jquery文件:

/app/webroot/js/index.js

我试图将它包含在我的视图中:

<?php
    echo $javascript->link('index', false);
?>

但我明白了:

Fatal error: Call to a member function link() on a non-object in /var/www/site1/app/views/uiemails/index.ctp on line 4 

我还把它放在我的布局标题中:

<?php
    //load the jQuery core
    $javascript->link('jquery-1.4.2.min', false);
?>

对于我需要做些什么才能让它发挥作用,我将不胜感激。谢谢

修改

(我正在使用cakephp版本1.3.2 我现在尝试过:

把它放在我的控制器中:

var $helpers = array('Form', 'Html');

然后,在我看来:

<?php
echo $this->html->script('index', false);
?>

但我仍然得到:

Fatal error: Call to a member function script() on a non-object in /var/www/site1/app/views/uiemails/index.ctp on line 4 

4 个答案:

答案 0 :(得分:4)

看起来您忘记在控制器中包含Javascript助手。语法还取决于您正在使用的CakePHP版本。在1.3.x中,不推荐使用Javascript帮助程序,而是使用Html帮助程序。

你的控制器:

<?php
class BakeriesController extends AppController {
    // not required if you're using the Html helper since it's included by default!
    var $helpers = array('Form', 'Html', 'Javascript');
}
?>

您的观点:

<?php echo $this->Javascript->link('whatever'); ?>

或使用CakePHP 1.3.x:

<?php echo $this->Html->script('whatever'); ?>

在您的文件系统中:

/app/webroot/js/whatever.js

相关文件:

答案 1 :(得分:0)

嗯,当我这样做的时候似乎有效:

<?php
//load javascript file that will be specific to this view (page)

echo $html->script('index');
?>

我很困惑(使用$ this-&gt; html-&gt;脚本),因为我发现其他教程说这样做但显然不正确,至少在最新版本的cakephp中。

答案 2 :(得分:0)

这是不对的:

 echo $this->html->script('index', false);

应该是:

 echo $html->script('index', false);

您还应该注意不要包含任何两次javascript(例如在布局和视图中)。

答案 3 :(得分:0)

echo $this->js->link('jquery-1.10.1.min');

输出:

<a href="/cake/posts/jquery-1.10.1.min" id="link-1138978643">/cake/posts/jquery-1.10.1.min</a>

试试这个:

echo $this->Html->script('jquery-1.10.1.min');

输出:

<script type="text/javascript" src="/cake/js/jquery-1.10.1.min.js"></script>