예제 #1
0
 /**
  * {@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;
     }));
 }
예제 #2
0
 /**
  * {@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;
     }));
 }