【问题标题】:CakePHP warning and Notice after installationCakePHP 安装后的警告和注意事项
【发布时间】:2015-09-21 06:29:08
【问题描述】:

成功安装 CakePHP 后,在第一次运行时,我在底部收到这些警告。我该如何解决这个问题。

警告 (2):View::element() 缺少参数 1,在第 61 行的 /Users/michaelanywar/Sites/cakephp/app/View/Layouts/default.ctp 中调用并定义了 [CORE/Cake/View /View.php,第 398 行]

注意(8):未定义变量:名称[CORE/Cake/View/View.php,第416行]

注意(8):未定义变量:名称[CORE/Cake/View/View.php,第422行]

通知 (1024):未找到元素:Elements/.ctp [CORE/Cake/View/View.php,第 425 行]

我的 View/view.php 行从 398 到 427 如下所示:

    public function element($name, $data = array(), $options = array()) {
    $file = $plugin = null;

    if (isset($options['plugin'])) {
        $name = Inflector::camelize($options['plugin']) . '.' . $name;
    }

    if (!isset($options['callbacks'])) {
        $options['callbacks'] = false;
    }

    if (isset($options['cache'])) {
        $contents = $this->_elementCache($name, $data, $options);
        if ($contents !== false) {
            return $contents;
        }
    }

    $file = $this->_getElementFilename($name);
    if ($file) {
        return $this->_renderElement($file, $data, $options);
    }

    if (empty($options['ignoreMissing'])) {
    list ($plugin, $name) = pluginSplit($name, true);
        $name = str_replace('/', DS, $name);
        $file = $plugin . 'Elements' . DS . $name . $this->ext;
        trigger_error(__d('cake_dev', 'Element Not Found: %s', $file), E_USER_NOTICE);
    }
}

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    如果您查看第一条警告/错误消息,应该清楚问题是什么:“警告 (2):View::element() 缺少参数 1”。

    查看默认布局视图模板 (/app/View/Layouts/default.ctp) 的第 61 行。你显然有一个没有传递模板名称的$this->element() 调用(因此Cake 正在寻找“Elements/.ctp”)。

    确保将模板名称传递给 element() 方法或将其从模板中删除。例如,如果您想包含模板“View/Elements/site_header.ctp”:-

    echo $this->element('site_header');
    

    模板只需要存在于“View/Elements”文件夹中。您不需要将 '.ctp' 扩展名传递给 element() 方法,Cake 假设这一点。

    确保您已阅读docs on Elements

    【讨论】:

    • Helo 感谢博士。我已经厌倦了从 default.ctp 中删除 element();?> 并且错误消失了,但这不会影响我将要做的任何其他工作的未来.. 或者如果我在视图文件夹中有 template.ctp.. 一切都会好的..?
    • 这解决了您的问题吗?
    【解决方案2】:

    将 default.ctp 移动到 View/Elements 文件夹是最好的,然后将其命名为 element('default');?> 我删除了布局文件夹中的 default.ctp..

    【讨论】:

    • 这没有任何意义。你真的应该有一个'default.ctp'布局,除非你在AppController中覆盖它,以便有一个不同的默认布局模板。
    猜你喜欢
    • 1970-01-01
    • 2020-01-19
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多