To make it easy to learn, let's apply it into new module, I created a new module for it named SanSessionToolbar like the following :
1. Start with the Collector :
namespace SanSessionToolbar\Collector;
use ZendDeveloperTools\Collector\CollectorInterface;
use Zend\Mvc\MvcEvent;
use Zend\Session\Container;
/**
* Session Data Collector.
*/
class SessionCollector implements CollectorInterface
{
/**
* @inheritdoc
*/
public function getName()
{
// this name must same with *collectors* name in the configuration
return 'session.toolbar';
}
/**
* {@inheritDoc}
*/
public function getPriority()
{
return 10;
}
/**
* @inheritdoc
*/
public function collect(MvcEvent $mvcEvent)
{
}
public function getSessionData()
{
$container = new Container;
$arraysession = $container->getManager()->getStorage()->toArray();
$data = array();
foreach($arraysession as $key => $row) {
if ($row instanceof \Zend\Stdlib\ArrayObject) {
$iterator = $row->getIterator();
while($iterator->valid()) {
$data[$iterator->key()] = $iterator->current() ;
$iterator->next();
}
}
}
return $data;
}
}
2. Now, create a view to var_dump the
SanSessionToolbar\Collector\SessionCollector::getSessionData().
<?php /* @var $collector \SanSessionToolbar\Collector\SessionCollector */ ?>
<div class="zdt-toolbar-entry">
<div class="zdt-toolbar-preview">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATxJREFUeNpi/P//PwMhMJuRkRVItQNxKhBzAPFOIM5O/f//MbpaFgbiAMigYiS+LxCDXOKPrpCJSAP1sYiZY1NIrIGHsYhtw6aQWC8vA2IlIM4EYn6oYRXYFDISEylokQOKlG/ACPlLsguBBggAKRUglgbi70B8EWjQS3x6sLoQaFAikLIDYjcglkKSegHEGUBDN+IyEFekeAOxJRBfAeJPSOISQDwZaKEYSS5Ec20KiEITVgW68g65yeYHAwmAGAN90PgPgPgjWQZCw8oOTXgX0LuvyXWhBxBLIvFBaW8zJV52RePfA+LdZBkI9K44kHJAEz4G9O5Pcl3IA8QyaGJHKYllRixiylDXywCxFKkGvgPiG2hiJUCDQHn5PhBbkGQgMKxABsYC8UEg/grFH4D4BBDHA/EebPoAAgwA3RZUHjvT8+IAAAAASUVORK5CYII=" alt="SESSION Data">
<span class="zdt-toolbar-info">
SessionData
</span>
</div>
<div class="zdt-toolbar-detail">
<span class="zdt-toolbar-info zdt-toolbar-info-redundant">
<span class="zdt-detail-label">Session Data</span>
</span>
<span class="zdt-toolbar-info">
<span class="zdt-detail-pre">
<?php Zend\Debug\Debug::dump($collector->getSessionData()); ?>
</span>
</span>
</div>
</div>
3. Configure the module configuration ( config/module.config.php ), Remember, that the toolbar entries name must same with our SessionCollector::getName().
return array(
'service_manager' => array(
'invokables' => array(
'session.toolbar' =>
'SanSessionToolbar\Collector\SessionCollector',
),
),
'view_manager' => array(
'template_map' => array(
'zend-developer-tools/toolbar/session-data'
=> __DIR__ . '/../view/zend-developer-tools/toolbar/session-data.phtml',
),
),
'zenddevelopertools' => array(
'profiler' => array(
'collectors' => array(
'session.toolbar' => 'session.toolbar',
),
),
'toolbar' => array(
'entries' => array(
'session.toolbar' => 'zend-developer-tools/toolbar/session-data',
),
),
),
);
The 'session.toolbar' must be registered into ServiceManager with an instance of SanSessionToolbar\Collector\SessionCollector, and registered into 'zenddevelopertools' config profiler and toolbar.
4. The Module.php is a usual Module class.
5. Register your new module into config/application.config.php
6. Now, let's test it by creating session data in our controller :
public function indexAction()
{
$container = new \Zend\Session\Container;
$container->a = 'b';
$container->foo = 'bar';
return new ViewModel();
}
Source :
https://samsonasik.wordpress.com/2014/06/27/zend-framework-2-create-custom-toolbar-for-zenddevelopertools/
Reference :
- http://stackoverflow.com/questions/20325842/how-to-log-something-to-zend-developer-tools-toolbar
- Image session icon originally from : http://makemore.info.yorku.ca/files/2012/11/info.png, encoded with base64_encode.
0 comments:
Post a Comment