Zend framework2 如何将内容记录到Zend开发者工具工具栏?

Zend framework2 如何将内容记录到Zend开发者工具工具栏?,zend-framework2,developer-tools,Zend Framework2,Developer Tools,可以登录到Zend Developer Tools工具栏ZF2 controller中的某个变量吗?好吧,我已经创建了一个收集器来在ZendDeveloper工具上添加个人信息。 您需要控制器提供的信息,这是我从未尝试过的。:) 我将向你展示我是如何创建收集器的,也许你可以找到一些从控制器获取信息的方法 在MyModule\module.config.php中 /* ZendDeveloperTools Configuration */ 'invokables' => array(

可以登录到Zend Developer Tools工具栏ZF2 controller中的某个变量吗?

好吧,我已经创建了一个收集器来在ZendDeveloper工具上添加个人信息。 您需要控制器提供的信息,这是我从未尝试过的。:)

我将向你展示我是如何创建收集器的,也许你可以找到一些从控制器获取信息的方法

MyModule\module.config.php中

/* ZendDeveloperTools Configuration */
'invokables' => array(
    'MyModule\ConfigCollector'   => 'MyModule\Collector\ConfigCollector',
),

'view_manager' => array(
    'template_map' => array(
        'zend-developer-tools/toolbar/mymodule-configs' => __DIR__ . '/../view/zend-developer-tools/toolbar/mymodule-configs.phtml',
    ),
),

'zenddevelopertools' => array(
    'profiler' => array(
        'collectors' => array(
            'mymodule_configs' => 'MyModule\ConfigCollector',
        ),
    ),
    'toolbar' => array(
        'entries' => array(
            'mymodule_configs' => 'zend-developer-tools/toolbar/mymodule-configs',
        ),
    ),
),
MyModule\Module.php
上,您需要加载可调用项,我通过添加以下方法来实现这一点:

public function getServiceConfig()
{
    return include __DIR__ . '/config/module.config.php';
}
在视图的上添加
.phtml
文件:

MyModule/view/zend-developer-tools/toolbar/mymodule-configs.phtml
并添加,例如:

<?php /* @var $collector \DoctrineORMModule\Collector\MappingCollector */ ?>
<div class="zdt-toolbar-entry">
    <div class="zdt-toolbar-preview">
        <img src="data:image/png;base64,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" alt="VnsDesenvolvimento">
        <span class="zdt-toolbar-info">
            Configurações Gerais
        </span>
    </div>
    <div class="zdt-toolbar-detail">
        <span class="zdt-toolbar-info">
            <span class="zdt-detail-label">Environment</span>
            <span class="zdt-detail-value">
                <?php echo $this->collector->getEnvironment(); ?>
            </span>
        </span>

        <span class="zdt-toolbar-info">
            <span class="zdt-detail-label">Default Locale</span>
            <span class="zdt-detail-value">
                <?php echo $this->collector->getDefaultLocale(); ?>
            </span>
        </span>

        <span class="zdt-toolbar-info">
            <span class="zdt-detail-label">Time Zone</span>
            <span class="zdt-detail-value">
                <?php echo $this->collector->getTimeZone(); ?>
            </span>
        </span>

    </div>
</div>

格拉斯构型
环境
默认语言环境
时区
现在,最后一部分! 我们需要创建一个收集器,它将获取我们想要显示的所有信息:

<?php
namespace MyModule\Collector;

use ZendDeveloperTools\Collector;

use Zend\Mvc\MvcEvent;

/**
 * Collector to be used in ZendDeveloperTools to record and display personal information
 *
 * @license MIT
 * @author  Vinicius Garcia <vinigar[...].com>
 */
class ConfigCollector extends \ZendDeveloperTools\Collector\AbstractCollector
{

    /**
     * {@inheritDoc}
     */
    public function getName()
    {
        return 'mymodule_configs';
    }

    /**
     * {@inheritDoc}
     */
    public function getPriority()
    {
        return 10;
    }

    /**
     * {@inheritDoc}
     */
    public function collect(MvcEvent $mvcEvent)
    {
        $date = new \DateTime();

        $this->data = array(
            'environment' => ucfirst(getenv('APPLICATION_ENV') ?: 'production'),
            'timezone' => $date->getTimezone()->getName(),
            'defaultlocale' => \Locale::getDefault(),
        );
    }

    /**
     * Returns the environment
     *
     * @return string
     */
    public function getEnvironment()
    {
        return $this->data['environment'];
    }

    /**
     * Returns the timezone
     *
     * @return string
     */
    public function getTimeZone()
    {
        return $this->data['timezone'];
    }

    /**
     * Returns the default locale
     *
     * @return string
     */
    public function getDefaultLocale()
    {
        return $this->data['defaultlocale'];
    }
}

简单地说,有可能:)
我对自己的做法并不感到自豪,但——众所周知的借口——它确实有效。
如果你有任何建议,我将不高兴,但很高兴听到他们

上面解释了如何创建定制收集器@vinigarcia87

为了在控制器(以及任何其他地方)中登录某些内容,然后在收集器中获取该数据,我在模块中创建了一个新类,其中包含一个静态字段和静态getter/setter,我将其用作代理。下面是一些代码:

namespace MyModule\Log;

class MyLogger {
    private static $messages = array();

    public static function log($message)
    {
        self::$messages[] = $message;
    }
    public static function getMessages()
    {
        return self::$messages;
    }
}
在控制器的操作中:

MyModule\Log\Logger::log('Informational message');
在收集器-收集方法中:

public function collect(MvcEvent $mvcEvent)
{
    $this->data = array(
        'messages'     => MyModule\Log\Logger::getMessages(),
    );
}
public function getMessages()
{
    return $this->data['messages'];
}
现在可以通过以下方式在toolbar entry.pthml文件中访问此消息:


您的意见…

您还可以使用我的软件包,该软件包将所有数据记录到bar中,并使用Tracy/Debugger突出显示并将树添加到转储的数据中

所以你可以简单地写:

<?php

\BarLogger\Collector\DebugCollector::barDump(['testing dump' => ['asd', 'asdad', 'fdgfdsg', 'gfgsd']], 'testing dump');

?>

或者简单地在快捷方式中使用全局函数:

<?php

barDump(['testing dump' => ['asd', 'asdad', 'fdgfdsg', 'gfgsd']], 'testing dump');

?>


值得注意的是,我基于DoctrineORMModule的解决方案。。。遗憾的是,我们找不到关于如何为ZendDeveloperTools创建插件的好说明…:(谢谢,这很有帮助。我会检查DoctrineORMModule以了解那里发生了什么。我支持你的建议,但我不能接受它作为正确答案。因此,我尝试了你的示例,但它不起作用。可能我错过了什么,或者你忘了提到某个步骤。问题是$this->collector在视图(.phtml)中为空文件。如果你知道我的错误在哪里,请告诉我。我想你误解了代码。收集器不是视图助手,你可以使用
$this->Collector
在视图中访问。如果你做得对,并且你的ZendDeveloper工具是activate,你创建的信息将自动显示在工具栏上。好吧,这是one word-fp(facepalm,可能是两个)。我的错误是getName方法中的名称与配置中的键不同。如果我不是那么懒,从一开始就开始调试,而几天前我发现了这一点。PS:谢谢你抽出时间陪我。