Skip to content
This repository has been archived by the owner on Jan 21, 2020. It is now read-only.

Commit

Permalink
Merge pull request #169 from snapshotpl/view-variables
Browse files Browse the repository at this point in the history
RequestCollector: Show available view variables
  • Loading branch information
Ocramius committed Feb 10, 2015
2 parents 9cc0f00 + b813356 commit 0fad615
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 31 deletions.
3 changes: 2 additions & 1 deletion composer.json
Expand Up @@ -28,7 +28,8 @@
"zendframework/zend-stdlib": "2.*",
"zendframework/zend-servicemanager": "2.*",
"zendframework/zend-version": "2.*",
"zendframework/zend-debug": "2.*"
"zendframework/zend-debug": "2.*",
"zendframework/zend-view": "2.*"
},
"suggest": {
"bjyoungblood/bjy-profiler": "Version: dev-master, allows the usage of the (Zend) Db collector.",
Expand Down
67 changes: 47 additions & 20 deletions src/ZendDeveloperTools/Collector/RequestCollector.php
Expand Up @@ -10,10 +10,11 @@
namespace ZendDeveloperTools\Collector;

use Zend\Mvc\MvcEvent;
use Zend\View\Model\ModelInterface;
use Zend\View\Variables;

/**
* Request Data Collector.
*
*/
class RequestCollector extends AbstractCollector
{
Expand All @@ -38,30 +39,55 @@ public function getPriority()
*/
public function collect(MvcEvent $mvcEvent)
{
$templates = array();
$match = $mvcEvent->getRouteMatch();
$views = array();
$match = $mvcEvent->getRouteMatch();
$viewModel = $mvcEvent->getViewModel();

$addToViewFromModel = function (ModelInterface $child) use (&$views) {
$vars = $child->getVariables();

$templates[] = $mvcEvent->getViewModel()->getTemplate();
if ($mvcEvent->getViewModel()->hasChildren()) {
foreach ($mvcEvent->getViewModel()->getChildren() as $child) {
$templates[] = $child->getTemplate();
if ($vars instanceof Variables) {
$vars = $vars->getArrayCopy();
}
}
$vars = (array) $vars;

if (empty($templates)) {
$templates[] = 'N/A';
}
foreach ($vars as $key => &$var) {
$var = $key . ': ' . (is_object($var) ? get_class($var) : gettype($var));
}
sort($vars);
$views[] = array(
'template' => $child->getTemplate(),
'vars' => $vars,
);
};

$addToViewFromModel($viewModel);
$this->addChildrenToView($viewModel, $addToViewFromModel);

$this->data = array(
'templates' => $templates,
'method' => $mvcEvent->getRequest()->getMethod(),
'status' => $mvcEvent->getResponse()->getStatusCode(),
'route' => ($match === null) ? 'N/A' : $match->getMatchedRouteName(),
'action' => ($match === null) ? 'N/A' : $match->getParam('action', 'N/A'),
'controller' => ($match === null) ? 'N/A' : $match->getParam('controller', 'N/A'),
'views' => $views,
'method' => $mvcEvent->getRequest()->getMethod(),
'status' => $mvcEvent->getResponse()->getStatusCode(),
'route' => ($match === null) ? 'N/A' : $match->getMatchedRouteName(),
'action' => ($match === null) ? 'N/A' : $match->getParam('action', 'N/A'),
'controller' => ($match === null) ? 'N/A' : $match->getParam('controller', 'N/A')
);
}

/**
* @param ModelInterface $viewModel
* @param callable $addToViewFromModel
*/
protected function addChildrenToView(ModelInterface $viewModel, $addToViewFromModel)
{
if ($viewModel->hasChildren()) {
foreach ($viewModel->getChildren() as $child) {
$addToViewFromModel($child);
$this->addChildrenToView($child, $addToViewFromModel);
}
}
}

/**
* Returns the response status code.
*
Expand Down Expand Up @@ -115,7 +141,8 @@ public function getControllerName()
/**
* Returns the controller and action name if possible, otherwise N/A.
*
* @param bool $short Removes the namespace.
* @param bool $short
* Removes the namespace.
* @return string
*/
public function getFullControllerName($short = true)
Expand All @@ -141,8 +168,8 @@ public function getFullControllerName($short = true)
*
* @return string
*/
public function getTemplateNames()
public function getViews()
{
return $this->data['templates'];
return $this->data['views'];
}
}
25 changes: 15 additions & 10 deletions view/zend-developer-tools/toolbar/request.phtml
@@ -1,33 +1,32 @@
<?php
$color = ($this->collector->getStatusCode() < 400)
? ($this->collector->getStatusCode() === 200) ? 'green' : 'yellow'
$statusCode = $this->collector->getStatusCode();
$color = ($statusCode < 400)
? ($statusCode === 200) ? 'green' : 'yellow'
: 'red';
?>
<div class="zdt-toolbar-entry">
<div class="zdt-toolbar-preview">
<img src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAA0JJREFUOMudVEFoI1UY/t4kk2yUylZlFNuaDduw2A2IiCD0WgQPqVUsewgt6kXQXEpPnoqnii3tJeAacVdahNLSiyClttCSgdimCZWCuOykk5mNEtYsNGYmTCaZ934vWai4ibXf6f3vfXx8//++9xi6QNO0d0Oh0LoQouW67s1oNGrgApDOF4ZhfGea5hQAnJ2dRTjnPtd1n2o0Gi8BgGmaXxiG8WUvQfZ4USqV7vp8vg+EEGCMnTLGrneOCAAjIgPANQAQQnwSiUS+6uqwv79fSqVST3POCQCI6HogEIBt2+S6LvP5fCCia0QEy7L48vLyMxdp/4qqqm3DMEjXdZFMJu8DSEuStLqwsPDANE0yTZN2d3dNAL6eSsVi8X1N05K6rlO5XKbZ2dmfAQyco9xcXFy8XyqVSNd1R9O0j4rF4uSTtPydmawRESMiVKtVpFKpWwD+OMf7tVKpfFqv138KhUJBAN8QEQHYeKKgZVlMlmUWCAQgyzKazebvjLF/EKempiqSJEEIwZrNJjjn6OpwYmLie0VRXlhbW3srGAwin89/C+DD80TO+bIsy3Acx0skEj82Gg2rZ2wAYHt7mw8ODkpEBCL6mohuA5AZY58DeFuSJOi6Xo7H4y//Zw5PTk6WOOczjDF0WgOAdudGpcd7RNSWZfnjWCx2t9dLkVRVDQshUKvV2rlc7qFt24Jz7uecs1qtxo+Ojv50HIc3m03f1tbWiwBQKBQCvdITmZyc/CUej98G8NrMzMydg4MDoaoqjY2NfQbg9enp6d3x8fEdAFcBIJfL3Ts+Ppa6zhDAFQAyAGtlZWU6HA7fcV0X1Wr1lUQioQF4fmNj4+rAwEBGkqQMY+wWEW0KId4kondGR0cLrJvdoaGhG4yx9wB4RJQul8t/AUA0Gn1uaWnpkaIoOD09dSORSLBer2Nzc3MknU7/hv+LTCZD2WyW5ufnKwCSc3NzejabpUwm4/3r+7oIdnZ2XNu2xfDwsENEP8RisbrjOLS/v29dStC27Tc8z2OKokT29vbuKYryqud58Pv9E5cSbLVarXw+/2h1dTXX19cXWl9fLxweHj6s1WptXBJ+ADcAPDsyMmIwxsKdOggAfwOpZLGNo7pH7AAAAABJRU5ErkJggg==" alt="Request and Response">
<span class="zdt-toolbar-info">
<span class="zdt-toolbar-bold zdt-toolbar-color-<?php echo $color; ?> zdt-toolbar-spacing">
<?php echo $this->collector->getStatusCode(); ?> </span>
<?php echo $statusCode; ?> </span>
<span class="zdt-toolbar-extra-info">
<abbr title="<?php echo $this->collector->getFullControllerName(false); ?>">
<?php echo $this->collector->getFullControllerName(); ?>
</abbr> <span class="zdt-toolbar-color-grey">on</span> <?php echo $this->collector->getRouteName(); ?>
</span>
</span>
</div>
<div class="zdt-toolbar-detail">
<div class="zdt-toolbar-detail zdt-toolbar-detail-overflow">
<span class="zdt-toolbar-info zdt-toolbar-info-redundant">
<span class="zdt-detail-label">Status code</span>
<span class="zdt-detail-value zdt-toolbar-bold zdt-toolbar-color-<?php echo $color; ?>">
<?php echo $this->collector->getStatusCode(); ?>
<?php echo $statusCode; ?>
</span>
</span>
<span class="zdt-toolbar-info">
<span class="zdt-detail-label">Method</span>
<span class="zdt-detail-value">
<?php echo $this->collector->getMethod(); ?>
</span>
<span class="zdt-detail-value"><?php echo $this->collector->getMethod(); ?></span>
</span>
<span class="zdt-toolbar-info zdt-toolbar-extra-info-redundant">
<span class="zdt-detail-label">Controller</span>
Expand All @@ -41,6 +40,12 @@ $color = ($this->collector->getStatusCode() < 400)
<span class="zdt-detail-label">Route</span>
<span class="zdt-detail-value"><?php echo $this->collector->getRouteName(); ?></span>
</span>
<?php echo $this->ZendDeveloperToolsDetailArray('Templates', $this->collector->getTemplateNames()); ?>
<?php foreach($this->collector->getViews() as $value): ?>
<span class="zdt-toolbar-info">
<span class="zdt-detail-label">Template</span>
<span class="zdt-detail-value zdt-detail-value-right"><?php echo $value['template']; ?></span>
<p class="zdt-detail-context">&nbsp;&nbsp;<?php echo implode('<br />&nbsp;&nbsp;', $value['vars']); ?></p>
</span>
<?php endforeach; ?>
</div>
</div>
</div>

0 comments on commit 0fad615

Please sign in to comment.