我对此感到困惑,因为我找不到关于如何做到这一点的好文档,我在我的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
答案 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>