43 lines
1.3 KiB
PHP
43 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Trinity\Bundle\AdminBreadcrumbsBundle\Listener;
|
|
|
|
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
|
|
use \Trinity\Bundle\AdminBreadcrumbsBundle\Model\BreadcrumbManager;
|
|
|
|
class RequestListener
|
|
{
|
|
protected $breadcrumbManager;
|
|
protected $ignoreRoutePatterns;
|
|
|
|
public function __construct(BreadcrumbManager $manager, array $ignore_route_patterns, array $required_uri_patterns)
|
|
{
|
|
$this->breadcrumbManager = $manager;
|
|
$this->ignoreRoutePatterns = $ignore_route_patterns;
|
|
$this->requiredUriPatterns = $required_uri_patterns;
|
|
}
|
|
|
|
public function onKernelRequest(GetResponseEvent $event)
|
|
{
|
|
foreach ($this->requiredUriPatterns as $uriPattern) {
|
|
if (!preg_match(sprintf('#%s#s', $uriPattern), $event->getRequest()->getPathInfo())) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (preg_match('`jsTranslations`', $event->getRequest()->getPathInfo())) {
|
|
return false;
|
|
}
|
|
|
|
foreach ($this->ignoreRoutePatterns as $routePattern) {
|
|
if (preg_match(sprintf('#%s#s', $routePattern), $event->getRequest()->get('_route'))) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
$this->breadcrumbManager->buildCrudBreadcrumbFor($event->getRequest());
|
|
|
|
return true;
|
|
}
|
|
}
|