在zend-developer-toolbar ZF2中激活BjyAuthorize的问题

时间:2013-04-20 18:44:10

标签: php zend-framework2 developer-tools user-roles bjyauthorize

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

在我的zend-developer-toolbar中显示我的角色实体中的用户角色时遇到问题。 Normaly我解决了自己的问题,但在这种情况下,我没有想法。 我正在使用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,

    ...
),

如果有人可以帮助我,那会很棒 THX!

1 个答案:

答案 0 :(得分: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,否则尝试使用应用程序配置中的数据库设置配置BjyProfiler。

希望有所帮助!


编辑:

进一步详细说明,默认情况下让BjyProfiler工作的问题与AdapterServiceFactory使用Zend\Db\Adapter\Adapter有关。

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

如果我在服务管理器中启用了AdapterServiceFactory字符串并且启用了BjyProfiler,则它似乎会使用BjyProfiler作为数据库适配器覆盖,因此无法使工具栏中的分析器工作。