【发布时间】:2012-11-26 20:51:14
【问题描述】:
在查看 CookBook 和一些代码示例时,我被告知要相信在 view.ctp 中包含 $this->App->js(); 会输出 JS [CDATA] 但它会引发致命错误:
致命错误:在第 32 行的 /Users/work/Dropbox/Websites/cake-cart/app/View/Layouts/default.ctp 中的非对象上调用成员函数 js()
查看日志仅显示与以下相关的调度错误:
2012-11-26 13:15:39 错误:[MissingControllerException] 找不到控制器类 CssController。 //app/webroot/index.php(92): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse)) {main}
我无法追踪它。也许没有足够的系统知识。有更多经验的人参与吗?
关于我的设置的唯一事情 - 不确定它是否相关 - 是我正在使用引导主题并已在 AppController APP/View/Themed/Bootstrap/ 中设置了主题
class AppController extends Controller {
public $theme = "Bootstrap";
...
这似乎可以为网站提供服务...但是对于这个 js() 致命错误和日志中的那个 CSSController 错误。
任何帮助将不胜感激,谢谢。
** 已编辑 **
好的......我正在弄清楚这个数字。看起来我引用的示例在 APP/View/Helper/AppHelper.php 中创建了一个公共函数,如下所示:
class AppHelper extends Helper {
public $helpers = array(
'Html',
'Form',
'Session',
'Js',
);
public function js() {
$shop = array();
$shop['basePath'] = Router::url('/');
$shop['params'] = array(
'controller' => $this->params['controller'],
'action' => $this->params['action'],
);
return $this->Html->scriptBlock('var Shop = ' . $this->Js->object($shop) . ';');
}
}
...所以为什么在 default.ctp 中它会是 $this->App->js() 是有道理的 .... 但我仍然收到错误
【问题讨论】:
-
不。警告 (512):方法 HtmlHelper::js 不存在 [CORE/Cake/View/Helper.php,第 179 行]
-
您是否在 appController 类的顶部包含了帮助程序? var $helpers = array('Html', 'Javascript');
-
嗯,不。我认为这不是问题,因为我正在使用的示例也不是。至少不是这样。仅供参考,无论如何,帮助程序是“Js”,而不是 Javascript。
-
示例没有这样做,因为它是默认启用的。但是,如果您在某处(例如控制器)重新声明了 $helpers 并且未在重新声明中包含 Js 帮助器,那么它将覆盖默认值。
标签: cakephp cakephp-2.0