0

在查看 CookBook 和一些代码示例时,我被告知要相信包含$this->App->js();在 view.ctp 中会输出 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() .... 但我仍然收到错误

4

1 回答 1

0

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

于 2012-11-27T19:41:25.620 回答