It's posible to log to Zend Developer Tools toolbar some variable in ZF2 controller?
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:
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With