/** * {@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; }