123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- <?php
- /**
- *
- * Cube Framework $Id$ GMkcZk/MWdcfItv/ExaALlToUS8v9wndJJ+qidS5/U0=
- *
- * @link http://codecu.be/framework
- * @copyright Copyright (c) 2017 CodeCube SRL
- * @license http://codecu.be/framework/license Commercial License
- *
- * @version 1.10 [rev.1.10.01]
- */
- /**
- * select form element generator class
- * apply translator to select options
- */
- namespace Cube\Form\Element;
- use Cube\Form\Element;
- class Select extends Element
- {
- /**
- *
- * type of element - override the variable from the parent class
- *
- * @var string
- */
- protected $_element = 'select';
- /**
- *
- * hide default value
- *
- * @var bool
- */
- protected $_hideDefault = false;
- /**
- *
- * class constructor
- *
- * @param string $name
- */
- public function __construct($name)
- {
- parent::__construct($this->_element, $name);
- }
- /**
- *
- * get hide default option
- *
- * @return string
- */
- public function isHideDefault()
- {
- return $this->_hideDefault;
- }
- /**
- *
- * set hide default option
- *
- * @param boolean $default
- *
- * @return $this
- */
- public function setHideDefault($default = true)
- {
- $this->_hideDefault = (bool)$default;
- return $this;
- }
- /**
- *
- * render the form element
- *
- * @return string
- */
- public function render()
- {
- $output = null;
- $brackets = null;
- $value = $this->getValue();
- $translate = $this->getTranslate();
- $multipleAttribute = $this->getAttribute('multiple');
- if ($this->getMultiple() === true || !empty($multipleAttribute)) {
- $brackets = $this->getBrackets();
- if (!empty($multipleAttribute)) {
- $output .= '<input type="hidden" name="' . $this->_name . '" value=""'
- . $this->_endTag;
- }
- }
- $output .=
- $this->getPrefix()
- . ' <select name="' . $this->_name . $brackets . '" '
- . $this->renderAttributes() . '>';
- $required = $this->getRequired();
- $hideDefault = $this->isHideDefault();
- if ($required && !$hideDefault) {
- $output .= '<option value="" selected>' . $translate->_('-- select --') . '</option>';
- }
- $output .= '<optgroup disabled hidden></optgroup>';
- foreach ((array)$this->_multiOptions as $key => $option) {
- $selected = (in_array($key, (array)$value)) ? 'selected' : '';
- if (is_array($option)) {
- $title = isset($option[0]) ? $option[0] : null;
- if (isset($option[1])) {
- $this->addMultiOptionAttributes($key, $option[1]);
- }
- }
- else {
- $title = $option;
- }
- $attributes = array(
- 'value="' . $key . '"',
- $this->renderOptionAttributes($key),
- $selected
- );
- $output .= '<option ' . implode(' ', array_filter($attributes)) . '>'
- . $translate->_($title) . '</option>';
- }
- $output .= '</select> '
- . $this->getSuffix();
- return $output;
- }
- }
|