Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function filterValue($value)
 {
     $return = array();
     $actions = $this->getOption('actions');
     foreach ($actions as $name => $options) {
         $options = $this->actionOptionsResolver->resolve((array) $options);
         $return[$name] = array();
         $parameters = array();
         $urlAttributes = $options['url_attr'];
         $content = $options['content'];
         if (isset($options['parameters_field_mapping'])) {
             foreach ($options['parameters_field_mapping'] as $parameterName => $mappingField) {
                 if ($mappingField instanceof \Closure) {
                     $parameters[$parameterName] = $mappingField($value, $this->getIndex());
                 } else {
                     $parameters[$parameterName] = $value[$mappingField];
                 }
             }
         }
         if (isset($options['additional_parameters'])) {
             foreach ($options['additional_parameters'] as $parameterValueName => $parameterValue) {
                 $parameters[$parameterValueName] = $parameterValue;
             }
         }
         if ($options['redirect_uri'] !== false) {
             if (is_string($options['redirect_uri'])) {
                 $parameters['redirect_uri'] = $options['redirect_uri'];
             }
             if ($options['redirect_uri'] === true) {
                 $parameters['redirect_uri'] = $this->container->get('request')->getRequestUri();
             }
         }
         if ($urlAttributes instanceof \Closure) {
             $urlAttributes = $urlAttributes($value, $this->getIndex());
             if (!is_array($urlAttributes)) {
                 throw new UnexpectedTypeException('url_attr option Clousure must return new array with url attributes.');
             }
         }
         $url = $this->router->generate($options['route_name'], $parameters, $options['absolute']);
         if (!isset($urlAttributes['href'])) {
             $urlAttributes['href'] = $url;
         }
         if (isset($content) && $content instanceof \Closure) {
             $content = (string) $content($value, $this->getIndex());
         }
         // $return[$name]['url'] is deprecated since 1.0 and will be removed in version 1.2
         $return[$name]['url'] = $url;
         $return[$name]['content'] = isset($content) ? $content : $name;
         $return[$name]['field_mapping_values'] = $value;
         $return[$name]['url_attr'] = $urlAttributes;
     }
     return $return;
 }
 /**
  * {@inheritdoc}
  */
 public function filterValue(ColumnTypeInterface $column, $value)
 {
     $this->validateOptions($column);
     $return = array();
     $actions = $column->getOption('actions');
     foreach ($actions as $name => $options) {
         $return[$name] = array('name' => $name, 'anchor' => $options['anchor']);
         $parameters = array();
         if (isset($options['parameters'])) {
             foreach ($options['parameters'] as $mappingField => $parameterName) {
                 $parameters[$parameterName] = $value[$mappingField];
             }
         }
         if (isset($options['parameters_values'])) {
             foreach ($options['parameters_values'] as $parameterValueName => $parameterValue) {
                 $parameters[$parameterValueName] = $parameterValue;
             }
         }
         $url = $this->router->generate($options['route_name'], $parameters, $options['absolute']);
         $return[$name]['url'] = $url;
     }
     return $return;
 }