CakePHP $ this-> App-> js()在视图中给出致命错误

时间:2012-11-26 20:51:15

标签: cakephp cakephp-2.0

在查看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()....但我仍然收到错误

1 个答案:

答案 0 :(得分:0)

好的,我将违规代码从AppHelper移到了我自己的Helper,并从主页调用了这个帮助器,这一切都很好。我从未弄清楚为什么$ this-> App-> js();没用。好吧......有时候做很多事情的方法很多。