Пример #1
0
 /**
  * Determine if the block is displayable based on the filter criteria.
  *
  * @param BlockEntity $blockEntity
  * @return boolean
  */
 public function isDisplayable(BlockEntity $blockEntity)
 {
     $request = $this->requestStack->getCurrentRequest();
     if (null === $request) {
         return true;
     }
     $displayable = true;
     $filters = $blockEntity->getFilters();
     foreach ($filters as $filter) {
         switch ($filter['attribute']) {
             case 'query param':
                 $name = $request->query->get($filter['queryParameter']);
                 break;
             case '_route_params':
                 $params = $request->attributes->get('_route_params');
                 $name = isset($params[$filter['queryParameter']]) ? $params[$filter['queryParameter']] : 'kjashdhk11111';
                 // random characters to prevent match
                 break;
             default:
                 $name = $request->attributes->get($filter['attribute']);
         }
         $displayable = $displayable && $this->compare($name, $filter['comparator'], $filter['value']);
     }
     // filter for language/locale
     $language = $blockEntity->getLanguage();
     if (!empty($language)) {
         $displayable = $displayable && $language == $request->getLocale();
     }
     return $displayable;
 }