CakePHP 3:未找到"配置"类

bow*_*rae 5 cakephp cakephp-3.0 cakephp-3.1

我昨天刚开始使用CakePHP v3.1.3,而且我一次只能在我的CakePHP 2.4.2网站上迁移一小部分.主要是试图了解变化.我遇到了问题Configure::read().

一点背景信息:我的数据库中有SettingsSite,SettingsSiteHeadersSettingsSitesOptions表,我也为这些表做了相应的表对象.在我的SettingsSiteTable类中,我有一个方法可以检索存储在数据库中的设置.一切都很好,以下代码在我的AppController中工作没问题.

<?php
namespace App\Controller;

use Cake\Controller\Controller;
use Cake\Event\Event;
use Cake\Core\Configure;

class AppController extends Controller{

    public function beforeFilter(Event $event){
        debug(Configure::read('SettingsSite.title'));
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是在我的视图中正确显示值.

我在主题默认布局中有以下代码,位于plugins/Default/src/Template/Layout/default.ctp中

<title>
    <?php
        echo $this->fetch('title') . ' | ' .
        Configure::read('SettingsSite.title');
    ?>
</title>
Run Code Online (Sandbox Code Playgroud)

我收到一个" 类'配置'没有找到插件/ Default/src/Template/Layout/default.ctp "错误消息.

然后我转到AppView.php文件并在命名空间声明下添加以下行:

use Cake\Core\Configure;
Run Code Online (Sandbox Code Playgroud)

错误仍然存​​在.

Fur*_*ury 7

只是用

use Cake\Core\Configure;
Run Code Online (Sandbox Code Playgroud)

在你的控制器上

此外,如果您在app文件夹中有自定义配置文件.您可以在Bootstrap文件中加载它并像这样加载Config;

$config = Configure::read('App.namespace');
debug($config);
Run Code Online (Sandbox Code Playgroud)


chr*_*ick 3

只需简单地将您的设置设置为应用程序控制器的 beforeFilter 中的视图变量:)

  • 在我看来,beforeFilter 和 beforeRender 是正确的。 (4认同)