3

有人可以给我一些关于如何将用户角色放入我的 zf2-toolbar 的说明。

我无法从我的角色实体中获取用户角色,在我的 zend-developer-toolbar 中可见。通常我会解决自己的问题,但在这种情况下,我没有想法。我正在使用 ZfcUser、BjyAuthorize 和 Doctrine2。我找不到有关如何使用户角色显示在工具栏上的任何说明。我使用 Composer 安装所有依赖项。我的作曲家文件如下所示:

"require": {
    "php": ">=5.3.3",
    "zendframework/zendframework": "2.*",
    "doctrine/common": ">=2.3-dev,<2.5-dev",
    "zf-commons/zfc-user": "0.*",
    "bjyoungblood/bjy-authorize": "1.2.*",
    "doctrine/doctrine-orm-module": "0.*",
    "zendframework/zftool": "dev-master",
    "zendframework/zend-developer-tools": "dev-master",
    "zf-commons/zfc-user-doctrine-orm": "dev-master",
    "bjyoungblood/bjy-profiler": "dev-master"
}

在工具栏中,我仍然收到消息:

Error
You have to install or enable @bjyoungblood's Zend\Db Profiler to use this feature.

在我的 config/autoload/module.zenddevelopertools.local.php 中,我确实将探查器设置为启用并且它也已安装,至少我用我的 composer.phar 进行了检查。

'profiler' => array(
    'enabled' => true,

    ...
),

如果有人可以帮助我,那就太好了,谢谢!

4

1 回答 1

3

我通过搜索错误消息找到了这个线程,You have to install or enable @bjyoungblood's Zend\Db Profiler to use this feature因为当我第一次安装 ByjProfiler 时,我无法让它在开发人员工具栏中显示查询统计信息。

自述文件和文档在工具栏中激活探查器的代码略有不同,但经过一番玩弄后,我得到了它的工作。

config/autoload/global.php中,我已经设置了以下内容:

return array(
    // ...
    'service_manager' => array(
        'factories' => array(
            'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
        ),
    ),
);

为了让 ByjProfiler 在 ZDT 工具栏中工作,我将其更改为:

return array(
    //...
    'service_manager' => array(
        'factories' => array(
            //'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
            'Zend\Db\Adapter\Adapter' => function($sm) {
                $config = $sm->get('Configuration');
                $modules = $sm->get('ModuleManager')->getLoadedModules();

                if (isset($modules['BjyProfiler'])) { // module is enabled in application.config.php
                    $adapter = new BjyProfiler\Db\Adapter\ProfilingAdapter($config['db']);
                    $adapter->setProfiler(new BjyProfiler\Db\Profiler\Profiler());
                    if (isset($config['db']['options']) && is_array($config['db']['options'])) {
                        $options = $config['db']['options'];
                    } else {
                        $options = array();
                    }
                    $adapter->injectProfilingStatementPrototype($options);
                } else {
                    $adapter = new Zend\Db\Adapter\Adapter($config['db']);
                }

                return $adapter;
            }
        ),
    ),
);

我从byj-profiler/config/module.config.php派生了大部分代码,但将其更改为检查加载的 BjyProfiler 模块是否处于活动状态。如果不是,它会回退到常规的 Zend\Db\Adapter\Adapter,否则会尝试使用应用程序配置中的 DB 设置来配置 BjyProfiler。

希望有帮助!


编辑:

为了进一步详细说明,让 BjyProfiler 默认工作的问题似乎与使用AdapterServiceFactoryfor 有关Zend\Db\Adapter\Adapter

如果我启用了 BjyProfiler,但从服务管理器中删除了数据库工厂,则分析器会自动工作而无需额外的代码或配置,但如果我从 application.config.php 中删除 BjyProfiler,那么我的数据库连接就会中断。

如果我AdapterServiceFactory在服务管理器中启用了字符串并启用了 BjyProfiler,它似乎会覆盖使用 BjyProfiler 作为数据库适配器,因此不会让探查器在工具栏中工作。

于 2013-11-14T07:23:22.357 回答