/** * {@inheritdoc} * <br/> * <br/> * Available Options : * <ul> * <li><b>anchor_route</b> : string <i>Route name. if the route requires arguments, be sur that they are present in 'params'</i></li> * <li><b>anchor_params</b> : array|null <i>Route's params.</i></li> * <li><b>anchor_args</b> : array <i>Route's static params.</i></li> * <li><b>anchor_text</b> : string|null <i>Anchor text. If null $view['value'] replace it.</i></li> * <li><b>anchor_title</b> : string|null <i>Anchor title</i></li> * </ul> */ public function setDefaultOptions(OptionsResolverInterface $resolver, array $defaultOptions) { parent::setDefaultOptions($resolver, $defaultOptions); $resolver->setDefaults(array('anchor_route' => null, 'anchor_params' => array(), 'anchor_args' => array(), 'anchor_text' => '', 'anchor_title' => '')); $resolver->setAllowedTypes(array('anchor_route' => 'string', 'anchor_params' => array('null', 'array'), 'anchor_args' => 'array', 'anchor_text' => 'string', 'anchor_title' => 'string')); $resolver->setNormalizers(array('anchor_params' => function (Options $options, $params) { if (!is_array($params) || is_null($options['anchor_route'])) { return array(); } else { if (count($params) === 0) { $params = array_keys($options['params']); foreach ($params as $name) { if (!is_string($name)) { throw new \UnexpectedValueException('Anchor params must be an associative array'); } } } else { $diff = array_diff($params, array_keys($options['params'])); if (count($diff) > 0) { throw new \UnexpectedValueException('anchor_params (' . implode(',', $diff) . ') must be defined in params'); } } } return $params; })); }
/** * {@inheritdoc} * <br/> * <br/> * Available Options : * <ul> * <li><b>format</b> : string <i>Date format, default Y/m/d H:i is defined in bundle config</i></li> * <li><b>date_format</b> : string <i>@see IntlDateformatter. Available values NONE, FULL, LONG, MEDIUM, SHORT</i></li> * <li><b>time_format</b> : string <i>@see IntlDateformatter. Available values NONE, FULL, LONG, MEDIUM, SHORT</i></li> * <li><b>locale</b> : string <i>Locale language for intl, default current locale @see \Locale::getDefault()</i></li> * </ul> * <p>Note: If format is set, intl (date_format, time_format) will be ignored</p> */ public function setDefaultOptions(OptionsResolverInterface $resolver, array $defaultOptions) { parent::setDefaultOptions($resolver, $defaultOptions); $resolver->setDefaults(array('format' => null, 'date_format' => $defaultOptions['date_format'], 'time_format' => $defaultOptions['time_format'], 'locale' => \Locale::getDefault())); $resolver->addAllowedTypes(array('format' => array('null', 'string'), 'date_format' => 'string', 'time_format' => 'string', 'locale' => 'string')); $resolver->addAllowedValues(array('date_format' => array_keys(self::$formats), 'time_format' => array_keys(self::$formats))); $resolver->setNormalizers(array('params' => function ($options, array $params) { if (count($params) !== 1) { throw new \InvalidArgumentException('params must contains one param'); } return $params; })); }