Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/** This file is part of the symfony package.* (c) Fabien Potencier <fabien.potencier@symfony-project.com>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*//*** sfWidgetFormDateTime represents a datetime widget.** @package symfony* @subpackage widget* @author Fabien Potencier <fabien.potencier@symfony-project.com>* @version SVN: $Id: sfWidgetFormDateTime.class.php 30762 2010-08-25 12:33:33Z fabien $*/class sfWidgetFormDateTime extends sfWidgetForm{/*** Configures the current widget.** The attributes are passed to both the date and the time widget.** If you want to pass HTML attributes to one of the two widget, pass an* attributes option to the date or time option (see below).** Available options:** * date: Options for the date widget (see sfWidgetFormDate)* * time: Options for the time widget (see sfWidgetFormTime)* * with_time: Whether to include time (true by default)* * format: The format string for the date and the time widget (default to %date% %time%)** @param array $options An array of options* @param array $attributes An array of default HTML attributes** @see sfWidgetForm*/protected function configure($options = array(), $attributes = array()){$this->addOption('date', array());$this->addOption('time', array());$this->addOption('with_time', true);$this->addOption('format', '%date% %time%');}/*** Renders the widget.** @param string $name The element name* @param string $value The date and time displayed in this widget* @param array $attributes An array of HTML attributes to be merged with the default HTML attributes* @param array $errors An array of errors for the field** @return string An HTML tag string** @see sfWidgetForm*/function render($name, $value = null, $attributes = array(), $errors = array()){$date = $this->getDateWidget($attributes)->render($name, $value);if (!$this->getOption('with_time')){return $date;}return strtr($this->getOption('format'), array('%date%' => $date,'%time%' => $this->getTimeWidget($attributes)->render($name, $value),));}/*** Returns the date widget.** @param array $attributes An array of attributes** @return sfWidgetForm A Widget representing the date*/protected function getDateWidget($attributes = array()){return new sfWidgetFormDate($this->getOptionsFor('date'), $this->getAttributesFor('date', $attributes));}/*** Returns the time widget.** @param array $attributes An array of attributes** @return sfWidgetForm A Widget representing the time*/protected function getTimeWidget($attributes = array()){return new sfWidgetFormTime($this->getOptionsFor('time'), $this->getAttributesFor('time', $attributes));}/*** Returns an array of options for the given type.** @param string $type The type (date or time)** @return array An array of options** @throws InvalidArgumentException when option date|time type is not array*/protected function getOptionsFor($type){$options = $this->getOption($type);if (!is_array($options)){throw new InvalidArgumentException(sprintf('You must pass an array for the %s option.', $type));}// add id_format if it's not there already$options += array('id_format' => $this->getOption('id_format'));return $options;}/*** Returns an array of HTML attributes for the given type.** @param string $type The type (date or time)* @param array $attributes An array of attributes** @return array An array of HTML attributes*/protected function getAttributesFor($type, $attributes){$defaults = isset($this->attributes[$type]) ? $this->attributes[$type] : array();return isset($attributes[$type]) ? array_merge($defaults, $attributes[$type]) : $defaults;}}