Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to log something to Zend Developer Tools toolbar?

It's posible to log to Zend Developer Tools toolbar some variable in ZF2 controller?

like image 362
Ivan G Avatar asked Dec 20 '22 20:12

Ivan G


1 Answers

Well, I have created a Collector to add personal information on ZendDevelopersTool. You need info from a Controller, and that's I never had tried to do. :)

I gonna show you how I created the Collector, and maybe you can find some way to take info from the Controller.

In your MyModule\module.config.php

/* ZendDeveloperTools Configuration */
'service_manager' => array(
    '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',
        ),
    ),
),

On MyModule\Module.php, you need to load your invokables, I'm doing this by adding the following method:

public function getServiceConfig()
{
    return include __DIR__ . '/config/module.config.php';
}

Add a .phtml file on the on your views:

MyModule/view/zend-developer-tools/toolbar/mymodule-configs.phtml

And add, for example:

<?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>

Now, the final part! We need to create a Collector, that gonna grab all teh information we wanna display:

<?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'];
    }
}

This Class have methods, like getDefaultLocale(), and we use them on zend-developer-tools/toolbar/mymodule-configs.phtml.

It should look like this:

My Configs on ZendDeveloperTool

You can try to adapt this piece of code, to fit your needs. And please, if you find out how to grab info from your controller, share with us!

Edit

In the ConfigCollector class, pay attention to the method collect(MvcEvent $mvcEvent).

As you can see, you have a MvcEvent object there. Maybe you can pass your personal info using it.

like image 115
Vinicius Garcia Avatar answered Dec 30 '22 10:12

Vinicius Garcia