【问题标题】:CakePHP $this->App->js() gives fatal error in viewCakePHP $this->App->js() 在视图中给出致命错误
【发布时间】: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


【解决方案1】:

好的,我将有问题的代码从 AppHelper 移到了我自己的 Helper 中,并从主页调用了该助手,一切都很好。我从来没有弄清楚为什么 $this->App->js();没用。嗯……有时有很多方法可以做某事。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多