123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- <?php
- abstract class sfWidgetForm extends sfWidget
- {
-
- public function __construct($options = array(), $attributes = array())
- {
- $this->addOption('id_format', '%s');
- $this->addOption('is_hidden', false);
- $this->addOption('needs_multipart', false);
- $this->addOption('default', null);
- $this->addOption('label', null);
- parent::__construct($options, $attributes);
- }
-
- public function setDefault($value)
- {
- $this->setOption('default', $value);
- }
-
- public function getDefault()
- {
- return $this->getOption('default');
- }
-
- public function setLabel($value)
- {
- $this->setOption('label', $value);
- }
-
- public function getLabel()
- {
- return $this->getOption('label');
- }
-
- public function setIdFormat($format)
- {
- $this->setOption('id_format', $format);
- }
-
- public function getIdFormat()
- {
- return $this->getOption('id_format');
- }
-
- public function isHidden()
- {
- return $this->getOption('is_hidden');
- }
-
- public function setHidden($boolean)
- {
- $this->setOption('is_hidden', (boolean) $boolean);
- }
-
- public function needsMultipartForm()
- {
- return $this->getOption('needs_multipart');
- }
-
- public function renderTag($tag, $attributes = array())
- {
- if (empty($tag))
- {
- return '';
- }
- $attributes = $this->fixFormId($attributes);
- return parent::renderTag($tag, $attributes);
- }
-
- public function renderContentTag($tag, $content = null, $attributes = array())
- {
- return parent::renderContentTag($tag, $content, $this->fixFormId($attributes));
- }
-
- protected function fixFormId($attributes)
- {
- if (!isset($attributes['id']) && isset($attributes['name']))
- {
- $attributes['id'] = $this->generateId($attributes['name'], isset($attributes['value']) ? $attributes['value'] : null);
- }
- return $attributes;
- }
-
- public function generateId($name, $value = null)
- {
- if (false === $this->getOption('id_format'))
- {
- return null;
- }
-
- if (strstr($name, '['))
- {
- $name = str_replace(array('[]', '][', '[', ']'), array((!is_null($value) ? '_'.$value : ''), '_', '_', ''), $name);
- }
- if (false !== strpos($this->getOption('id_format'), '%s'))
- {
- return sprintf($this->getOption('id_format'), $name);
- }
- return $name;
- }
-
-
- static protected function generateTwoCharsRange($start, $stop)
- {
- $results = array();
- for ($i = $start; $i <= $stop; $i++)
- {
- $results[$i] = sprintf('%02d', $i);
- }
- return $results;
- }
- }
|