formatAttributes() публичный Метод

- '1' (string) - 1 (integer) - true (boolean) - 'true' (string) Then the value will be reset to be identical with key's name. If the value is not one of these 4, the parameter is not output. 'escape' is a special option in that it controls the conversion of attributes to their HTML-entity encoded equivalents. Set to false to disable HTML-encoding. If value for any option key is set to null or false, that option will be excluded from output. This method uses the 'attribute' and 'compactAttribute' templates. Each of these templates uses the name and value variables. You can modify these templates to change how attributes are formatted.
public formatAttributes ( array | null $options, array | null $exclude = null ) : string
$options array | null Array of options.
$exclude array | null Array of options to be excluded, the options here will not be part of the return.
Результат string Composed attributes.
 /**
  * Render a text widget or other simple widget like email/tel/number.
  *
  * This method accepts a number of keys:
  *
  * - `name` The name attribute.
  * - `val` The value attribute.
  * - `escape` Set to false to disable escaping on all attributes.
  *
  * Any other keys provided in $data will be converted into HTML attributes.
  *
  * @param array $data The data to build an input with.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['name' => '', 'val' => null, 'type' => 'text', 'escape' => true];
     $data['value'] = $data['val'];
     unset($data['val']);
     return $this->_templates->format('input', ['name' => $data['name'], 'type' => $data['type'], 'attrs' => $this->_templates->formatAttributes($data, ['name', 'type'])]);
 }
Пример #2
0
 /**
  * Render a text widget or other simple widget like email/tel/number.
  *
  * This method accepts a number of keys:
  *
  * - `name` The name attribute.
  * - `val` The value attribute.
  * - `escape` Set to false to disable escaping on all attributes.
  *
  * Any other keys provided in $data will be converted into HTML attributes.
  *
  * @param array $data The data to build an input with.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['name' => '', 'val' => null, 'type' => 'text', 'mode' => 'datetime', 'escape' => true, 'readonly' => true, 'templateVars' => []];
     // mode value and class
     $mode = $data['mode'];
     $hval = $data['value'] = $data['val'];
     $data['class'] = $data['type'];
     unset($data['val'], $data['mode']);
     // transform into frozen time if not already
     if (!($data['value'] instanceof FrozenTime || $data['value'] instanceof FrozenDate)) {
         $data['value'] = new FrozenTime($data['value']);
     }
     // transform values
     if ($mode == 'datetime') {
         $hval = $data['value']->format('Y-m-d H:i:s');
         $data['value'] = $data['value']->format('d-M-Y H:i:s');
     }
     if ($mode == 'date') {
         $hval = $data['value']->format('Y-m-d');
         $data['value'] = $data['value']->format('d-M-Y');
     }
     if ($mode == 'time') {
         $hval = $data['value'] = $data['value']->format('H:i:s');
     }
     // render
     $rand = Text::uuid();
     return "<div id='{$rand}' style='position: relative;'>" . $this->_templates->format('input', ['name' => $data['name'], 'type' => 'hidden', 'attrs' => $this->_templates->formatAttributes(['value' => $hval])]) . $this->_templates->format('input', ['name' => $data['name'] . '-' . $rand, 'type' => $mode, 'templateVars' => $data['templateVars'], 'attrs' => $this->_templates->formatAttributes($data, ['name', 'type'])]) . "<div id='dtpicker-{$rand}'></div><scriptend>\$(document).ready(Backend.DTPicker('{$rand}', '{$mode}'));</scriptend></div>";
 }
 public function render(array $data, ContextInterface $context)
 {
     $value = '';
     if (isset($data['val'])) {
         $value = $data['val'];
     }
     return $this->_templates->format('static', ['value' => $value, 'attrs' => $this->_templates->formatAttributes($data, ['val', 'name', 'type'])]);
 }
Пример #4
0
 /**
  * Render a text widget or other simple widget like email/tel/number.
  *
  * This method accepts a number of keys:
  *
  * - `name` The name attribute.
  * - `val` The value attribute.
  * - `escape` Set to false to disable escaping on all attributes.
  *
  * Any other keys provided in $data will be converted into HTML attributes.
  *
  * @param array $data The data to build an input with.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string
  * @SuppressWarnings("unused")
  */
 public function render(array $data, ContextInterface $context)
 {
     $data = array_merge(['name' => '', 'val' => null, 'type' => 'text', 'escape' => true, 'class' => '', 'templateVars' => []], $data);
     $data['value'] = $data['val'];
     unset($data['val']);
     list($before, $after, $data) = $this->_getBeforeAfter($data);
     $data = $this->_addClass($data, 'form-control');
     return $this->_templates->format('input', ['name' => $data['name'], 'type' => $data['type'], 'before' => $before, 'after' => $after, 'templateVars' => $data['templateVars'], 'attrs' => $this->_templates->formatAttributes($data, ['name', 'type', 'text', 'fieldName'])]);
 }
Пример #5
0
 /**
  * Render a color picker widget.
  *
  * @param array $data The data to build an input with.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['name' => '', 'val' => null, 'type' => 'text', 'escape' => true];
     $data['value'] = $data['val'];
     $data['readonly'] = 'readonly';
     unset($data['val']);
     $this->_loadAssets();
     $data['class'] = !empty($data['class']) ? "{$data['class']} fontselector" : 'fontselector';
     return $this->_templates->format('input', ['name' => $data['name'], 'type' => 'text', 'attrs' => $this->_templates->formatAttributes($data, ['name', 'type'])]) . '<p id="' . $data['id'] . '-preview" style="font:' . $data['value'] . ';">Example text</p>';
 }
Пример #6
0
 /**
  * Render a checkbox element.
  *
  * Data supports the following keys:
  *
  * - `name` - The name of the input.
  * - `value` - The value attribute. Defaults to '1'.
  * - `val` - The current value. If it matches `value` the checkbox will be checked.
  *   You can also use the 'checked' attribute to make the checkbox checked.
  * - `disabled` - Whether or not the checkbox should be disabled.
  *
  * Any other attributes passed in will be treated as HTML attributes.
  *
  * @param array $data The data to create a checkbox with.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string Generated HTML string.
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['name' => '', 'value' => 1, 'val' => null, 'disabled' => false];
     if ($this->_isChecked($data)) {
         $data['checked'] = true;
     }
     unset($data['val']);
     $attrs = $this->_templates->formatAttributes($data, ['name', 'value']);
     return $this->_templates->format('checkbox', ['name' => $data['name'], 'value' => $data['value'], 'attrs' => $attrs]);
 }
Пример #7
0
 /**
  * Render a color picker widget.
  *
  * @param array $data The data to build an input with.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['name' => '', 'val' => null, 'type' => 'text', 'escape' => true];
     $data['value'] = $data['val'];
     unset($data['val']);
     $this->_loadAssets();
     if (empty($data['id'])) {
         $data['id'] = 'color-picker-' . md5(serialize($data));
     }
     return $this->_templates->format('input', ['name' => $data['name'], 'type' => 'hidden', 'attrs' => $this->_templates->formatAttributes($data, ['name', 'type'])]) . '<div class="colorSelector"><div class="preview" data-for="' . $data['id'] . '"></div></div>';
 }
Пример #8
0
 /**
  * Render a LilDate field.
  *
  * This method accepts a number of keys:
  *
  * - `text` The text of the button. Unlike all other form controls, buttons
  *   do not escape their contents by default.
  * - `escape` Set to true to enable escaping on all attributes.
  * - `type` The button type defaults to 'submit'.
  *
  * Any other keys provided in $data will be converted into HTML attributes.
  *
  * @param array            $data    The data to build a button with.
  * @param ContextInterface $context The current form context.
  * 
  * @return string
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['val' => '', 'name' => '', 'precision' => 2, 'empty' => true, 'class' => 'right'];
     if (is_numeric($data['val'])) {
         $data['value'] = $this->view->Number->precision($data['val'], $data['precision']);
     } else {
         $data['value'] = $data['val'];
     }
     $this->view->Lil->jsReady(sprintf('$("#%1$s").LilFloat({places:%2$s});', $data['id'], $data['precision']));
     return $this->templates->format('input', ['type' => 'text', 'name' => $data['name'], 'attrs' => $this->templates->formatAttributes($data, ['name', 'val', 'precision', 'empty'])]);
 }
Пример #9
0
 /**
  * Renders a date time widget
  *
  * - `name` - Set the input name.
  * - `disabled` - Either true or an array of options to disable.
  * - `val` - A date time string, integer or DateTime object
  * - `empty` - Set to true to add an empty option at the top of the
  *   option elements. Set to a string to define the display value of the
  *   empty option.
  *
  * In addition to the above options, the following options allow you to control
  * which input elements are generated. By setting any option to false you can disable
  * that input picker. In addition each picker allows you to set additional options
  * that are set as HTML properties on the picker.
  *
  * - `year` - Array of options for the year select box.
  * - `month` - Array of options for the month select box.
  * - `day` - Array of options for the day select box.
  * - `hour` - Array of options for the hour select box.
  * - `minute` - Array of options for the minute select box.
  * - `second` - Set to true to enable the seconds input. Defaults to false.
  * - `meridian` - Set to true to enable the meridian input. Defaults to false.
  *   The meridian will be enabled automatically if you choose a 12 hour format.
  *
  * The `year` option accepts the `start` and `end` options. These let you control
  * the year range that is generated. It defaults to +-5 years from today.
  *
  * The `month` option accepts the `name` option which allows you to get month
  * names instead of month numbers.
  *
  * The `hour` option allows you to set the following options:
  *
  * - `format` option which accepts 12 or 24, allowing
  *   you to indicate which hour format you want.
  * - `start` The hour to start the options at.
  * - `end` The hour to stop the options at.
  *
  * The start and end options are dependent on the format used. If the
  * value is out of the start/end range it will not be included.
  *
  * The `minute` option allows you to define the following options:
  *
  * - `interval` The interval to round options to.
  * - `round` Accepts `up` or `down`. Defines which direction the current value
  *   should be rounded to match the select options.
  *
  * @param array $data Data to render with.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string A generated select box.
  * @throws \RuntimeException When option data is invalid.
  */
 public function render(array $data, ContextInterface $context)
 {
     $data = $this->_normalizeData($data);
     $selected = $this->_deconstructDate($data['val'], $data);
     $templateOptions = [];
     foreach ($this->_selects as $select) {
         if ($data[$select] === false || $data[$select] === null) {
             $templateOptions[$select] = '';
             unset($data[$select]);
             continue;
         }
         if (!is_array($data[$select])) {
             throw new RuntimeException(sprintf('Options for "%s" must be an array|false|null', $select));
         }
         $method = "_{$select}Select";
         $data[$select]['name'] = $data['name'] . "[" . $select . "]";
         $data[$select]['val'] = $selected[$select];
         if (!isset($data[$select]['empty'])) {
             $data[$select]['empty'] = $data['empty'];
         }
         if (!isset($data[$select]['disabled'])) {
             $data[$select]['disabled'] = $data['disabled'];
         }
         $templateOptions[$select] = $this->{$method}($data[$select], $context);
         unset($data[$select]);
     }
     unset($data['name'], $data['empty'], $data['disabled'], $data['val']);
     $templateOptions['attrs'] = $this->_templates->formatAttributes($data);
     return $this->_templates->format('dateWidget', $templateOptions);
 }
Пример #10
0
 /**
  * Render a LilDate field.
  *
  * This method accepts a number of keys:
  *
  * - `text` The text of the button. Unlike all other form controls, buttons
  *   do not escape their contents by default.
  * - `escape` Set to true to enable escaping on all attributes.
  * - `type` The button type defaults to 'submit'.
  *
  * Any other keys provided in $data will be converted into HTML attributes.
  *
  * @param array            $data    The data to build a button with.
  * @param ContextInterface $context The form context.
  * 
  * @return string
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['val' => '', 'name' => ''];
     if (is_a($data['val'], 'Cake\\I18n\\Time') || is_a($data['val'], 'Cake\\I18n\\Date') || is_a($data['val'], 'Cake\\I18n\\FrozenTime') || is_a($data['val'], 'Cake\\I18n\\FrozenDate')) {
         $data['value'] = $data['val']->toDateString();
     } else {
         if ($theDate = Time::parseDate($data['val'], 'yyyy-MM-dd')) {
             $data['value'] = $theDate->toDateString();
         }
     }
     // default field type is HTML5 date
     $fieldType = 'date';
     // localized date input with jquery date picker
     if (Configure::read('Lil.legacyDateFields')) {
         $fieldType = 'text';
         if ($theDate = Time::parseDate($data['value'], 'yyyy-MM-dd')) {
             $parts = str_split(Configure::read('Lil.dateFormat'));
             for ($i = 0; $i < sizeof($parts); $i++) {
                 $parts[$i] = strtr($parts[$i], ['D' => str_pad($theDate->day, 2, '0', STR_PAD_LEFT), 'M' => str_pad($theDate->month, 2, '0', STR_PAD_LEFT), 'Y' => $theDate->year]);
             }
             $data['value'] = implode(Configure::read('Lil.dateSeparator'), $parts);
         }
         $this->view->Lil->jsReady(sprintf('$("#%1$s").datepicker(%2$s);', $data['id'], $this->_jsOptions()));
     }
     return $this->templates->format('input', ['type' => $fieldType, 'name' => $data['name'], 'attrs' => $this->templates->formatAttributes($data, ['name', 'val'])]);
 }
Пример #11
0
 /**
  * Renders a single radio input and label.
  *
  * @param string|int $val The value of the radio input.
  * @param string|array $text The label text, or complex radio type.
  * @param array $data Additional options for input generation.
  * @param \Cake\View\Form\ContextInterface $context The form context
  * @return string
  */
 protected function _renderInput($val, $text, $data, $context)
 {
     $escape = $data['escape'];
     if (is_int($val) && isset($text['text'], $text['value'])) {
         $radio = $text;
         $text = $radio['text'];
     } else {
         $radio = ['value' => $val, 'text' => $text];
     }
     $radio['name'] = $data['name'];
     if (empty($radio['id'])) {
         $radio['id'] = $this->_id($radio['name'], $radio['value']);
     }
     if (isset($data['val']) && is_bool($data['val'])) {
         $data['val'] = $data['val'] ? 1 : 0;
     }
     if (isset($data['val']) && strval($data['val']) === strval($radio['value'])) {
         $radio['checked'] = true;
     }
     if ($this->_isDisabled($radio, $data['disabled'])) {
         $radio['disabled'] = true;
     }
     if (!empty($data['required'])) {
         $radio['required'] = true;
     }
     if (!empty($data['form'])) {
         $radio['form'] = $data['form'];
     }
     $input = $this->_templates->format('radio', ['name' => $radio['name'], 'value' => $escape ? h($radio['value']) : $radio['value'], 'attrs' => $this->_templates->formatAttributes($radio, ['name', 'value', 'text'])]);
     $label = $this->_renderLabel($radio, $data['label'], $input, $context, $escape);
     if ($label === false && strpos($this->_templates->get('radioWrapper'), '{{input}}') === false) {
         $label = $input;
     }
     return $this->_templates->format('radioWrapper', ['input' => $input, 'label' => $label]);
 }
Пример #12
0
 /**
  * Render a set of options.
  *
  * Will recursively call itself when option groups are in use.
  *
  * @param array $options The options to render.
  * @param array|null $disabled The options to disable.
  * @param array|string|null $selected The options to select.
  * @param bool $escape Toggle HTML escaping.
  * @return array Option elements.
  */
 protected function _renderOptions($options, $disabled, $selected, $escape)
 {
     $out = [];
     foreach ($options as $key => $val) {
         // Option groups
         $arrayVal = is_array($val) || $val instanceof Traversable;
         if (!is_int($key) && $arrayVal || is_int($key) && $arrayVal && isset($val['options'])) {
             $out[] = $this->_renderOptgroup($key, $val, $disabled, $selected, $escape);
             continue;
         }
         // Basic options
         $optAttrs = ['value' => $key, 'text' => $val];
         if (is_array($val) && isset($optAttrs['text'], $optAttrs['value'])) {
             $optAttrs = $val;
         }
         if ($this->_isSelected($key, $selected)) {
             $optAttrs['selected'] = true;
         }
         if ($this->_isDisabled($key, $disabled)) {
             $optAttrs['disabled'] = true;
         }
         $optAttrs['escape'] = $escape;
         $out[] = $this->_templates->format('option', ['value' => $escape ? h($optAttrs['value']) : $optAttrs['value'], 'text' => $escape ? h($optAttrs['text']) : $optAttrs['text'], 'attrs' => $this->_templates->formatAttributes($optAttrs, ['text', 'value'])]);
     }
     return $out;
 }
Пример #13
0
 /**
  * Render a text widget or other simple widget like email/tel/number.
  *
  * This method accepts a number of keys:
  *
  * - `name` The name attribute.
  * - `val` The value attribute.
  * - `escape` Set to false to disable escaping on all attributes.
  *
  * Any other keys provided in $data will be converted into HTML attributes.
  *
  * @param array $data The data to build an input with.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['name' => '', 'val' => null, 'type' => 'text', 'escape' => true, 'templateVars' => []];
     $data['value'] = $data['val'];
     unset($data['val']);
     $before = null;
     $after = null;
     if (isset($data['before'])) {
         $before = $data['before'];
         unset($data['before']);
     }
     if (isset($data['after'])) {
         $after = $data['after'];
         unset($data['after']);
     }
     return $this->_templates->format('input', ['name' => $data['name'], 'type' => $data['type'], 'before' => $before, 'after' => $after, 'templateVars' => $data['templateVars'], 'attrs' => $this->_templates->formatAttributes($data, ['name', 'type'])]);
 }
 /**
  * Render a single checkbox & wrapper.
  *
  * @param array $checkbox An array containing checkbox key/value option pairs
  * @param \Cake\View\Form\ContextInterface $context Context object.
  * @return string
  */
 protected function _renderInput($checkbox, $context)
 {
     $input = $this->_templates->format('checkbox', ['name' => $checkbox['name'] . '[]', 'value' => $checkbox['escape'] ? h($checkbox['value']) : $checkbox['value'], 'attrs' => $this->_templates->formatAttributes($checkbox, ['name', 'value', 'text'])]);
     $labelAttrs = ['for' => $checkbox['id'], 'escape' => $checkbox['escape'], 'text' => $checkbox['text'], 'input' => $input];
     if (!empty($checkbox['checked']) && empty($labelAttrs['class'])) {
         $labelAttrs['class'] = 'selected';
     }
     $label = $this->_label->render($labelAttrs, $context);
     return $this->_templates->format('checkboxWrapper', ['label' => $label, 'input' => $input]);
 }
Пример #15
0
 /**
  * Translate a result array into a HTML table
  *
  * @todo Move to Text Helper etc.
  *
  * Options:
  * - recursive: Recursively generate tables for multi-dimensional arrays
  * - heading: Display the first as heading row (th)
  * - escape: Defaults to true
  * - null: Null value
  *
  * @author Aidan Lister <*****@*****.**>
  * @version 1.3.2
  * @link http://aidanlister.com/2004/04/converting-arrays-to-human-readable-tables/
  * @param array $array The result (numericaly keyed, associative inner) array.
  * @param array $options
  * @param array $attributes For the table
  * @return string
  */
 public function array2table(array $array, array $options = [], array $attributes = [])
 {
     $defaults = ['null' => '&nbsp;', 'recursive' => false, 'heading' => true, 'escape' => true];
     $options += $defaults;
     // Sanity check
     if (empty($array) || !is_array($array)) {
         return false;
     }
     if (!isset($array[0]) || !is_array($array[0])) {
         $array = [$array];
     }
     $attributes += ['class' => 'table'];
     $attributes = $this->template->formatAttributes($attributes);
     // Start the table
     $table = "<table{$attributes}>\n";
     if ($options['heading']) {
         // The header
         $table .= "\t<tr>";
         // Take the keys from the first row as the headings
         foreach (array_keys($array[0]) as $heading) {
             $table .= '<th>' . ($options['escape'] ? h($heading) : $heading) . '</th>';
         }
         $table .= "</tr>\n";
     }
     // The body
     foreach ($array as $row) {
         $table .= "\t<tr>";
         foreach ($row as $cell) {
             $table .= '<td>';
             // Cast objects
             if (is_object($cell)) {
                 $cell = (array) $cell;
             }
             if ($options['recursive'] && is_array($cell) && !empty($cell)) {
                 // Recursive mode
                 $table .= "\n" . static::array2table($cell, $options) . "\n";
             } else {
                 $table .= !is_array($cell) && strlen($cell) > 0 ? $options['escape'] ? h($cell) : $cell : $options['null'];
             }
             $table .= '</td>';
         }
         $table .= "</tr>\n";
     }
     $table .= '</table>';
     return $table;
 }
Пример #16
0
 /**
  * Renders a date time widget
  *
  * - `name` - Set the input name.
  * - `disabled` - Either true or an array of options to disable.
  * - `val` - A date time string, integer or DateTime object
  * - `empty` - Set to true to add an empty option at the top of the
  *   option elements. Set to a string to define the display value of the
  *   empty option.
  *
  * In addition to the above options, the following options allow you to control
  * which input elements are generated. By setting any option to false you can disable
  * that input picker. In addition each picker allows you to set additional options
  * that are set as HTML properties on the picker.
  *
  * - `year` - Array of options for the year select box.
  * - `month` - Array of options for the month select box.
  * - `day` - Array of options for the day select box.
  * - `hour` - Array of options for the hour select box.
  * - `minute` - Array of options for the minute select box.
  * - `second` - Set to true to enable the seconds input. Defaults to false.
  * - `meridian` - Set to true to enable the meridian input. Defaults to false.
  *   The meridian will be enabled automatically if you choose a 12 hour format.
  *
  * The `year` option accepts the `start` and `end` options. These let you control
  * the year range that is generated. It defaults to +-5 years from today.
  *
  * The `month` option accepts the `name` option which allows you to get month
  * names instead of month numbers.
  *
  * The `hour` option allows you to set the following options:
  *
  * - `format` option which accepts 12 or 24, allowing
  *   you to indicate which hour format you want.
  * - `start` The hour to start the options at.
  * - `end` The hour to stop the options at.
  *
  * The start and end options are dependent on the format used. If the
  * value is out of the start/end range it will not be included.
  *
  * The `minute` option allows you to define the following options:
  *
  * - `interval` The interval to round options to.
  * - `round` Accepts `up` or `down`. Defines which direction the current value
  *   should be rounded to match the select options.
  *
  * @param array $data Data to render with.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string A generated select box.
  * @throws \RuntimeException When option data is invalid.
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['name' => '', 'empty' => false, 'disabled' => null, 'val' => null, 'year' => [], 'month' => [], 'day' => [], 'hour' => [], 'minute' => [], 'second' => [], 'meridian' => null];
     $selected = $this->_deconstructDate($data['val'], $data);
     $timeFormat = isset($data['hour']['format']) ? $data['hour']['format'] : null;
     if ($timeFormat === 12 && !isset($data['meridian'])) {
         $data['meridian'] = [];
     }
     if ($timeFormat === 24) {
         $data['meridian'] = false;
     }
     $templateOptions = [];
     foreach ($this->_selects as $select) {
         if ($data[$select] === false || $data[$select] === null) {
             $templateOptions[$select] = '';
             unset($data[$select]);
             continue;
         }
         if (!is_array($data[$select])) {
             throw new RuntimeException(sprintf('Options for "%s" must be an array|false|null', $select));
         }
         $method = "_{$select}Select";
         $data[$select]['name'] = $data['name'] . "[" . $select . "]";
         $data[$select]['val'] = $selected[$select];
         if (!isset($data[$select]['empty'])) {
             $data[$select]['empty'] = $data['empty'];
         }
         if (!isset($data[$select]['disabled'])) {
             $data[$select]['disabled'] = $data['disabled'];
         }
         $templateOptions[$select] = $this->{$method}($data[$select], $context);
         unset($data[$select]);
     }
     unset($data['name'], $data['empty'], $data['disabled'], $data['val']);
     $templateOptions['attrs'] = $this->_templates->formatAttributes($data);
     return $this->_templates->format('dateWidget', $templateOptions);
 }
Пример #17
0
 /**
  * Render a label widget.
  *
  * Accepts the following keys in $data:
  *
  * - `text` The text for the label.
  * - `input` The input that can be formatted into the label if the template allows it.
  * - `escape` Set to false to disable HTML escaping.
  *
  * All other attributes will be converted into HTML attributes.
  *
  * @param array $data Data array.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['class' => '', 'title' => '', 'description' => ''];
     $class = !empty($data['class']) ? ' ' . $data['class'] : '';
     return $this->_templates->format($this->_sectionTemplate, ['title' => $data['title'], 'description' => $data['description'], 'class' => $class, 'attrs' => $this->_templates->formatAttributes($data, ['class', 'title', 'description'])]);
 }
Пример #18
0
 /**
  * Render a label widget.
  *
  * Accepts the following keys in $data:
  *
  * - `text` The text for the label.
  * - `input` The input that can be formatted into the label if the template allows it.
  * - `escape` Set to false to disable HTML escaping.
  *
  * All other attributes will be converted into HTML attributes.
  *
  * @param array $data Data array.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['text' => '', 'input' => '', 'hidden' => '', 'escape' => true, 'templateVars' => []];
     return $this->_templates->format($this->_labelTemplate, ['text' => $data['escape'] ? h($data['text']) : $data['text'], 'input' => $data['input'], 'hidden' => $data['hidden'], 'templateVars' => $data['templateVars'], 'attrs' => $this->_templates->formatAttributes($data, ['text', 'input', 'hidden'])]);
 }
Пример #19
0
 /**
  * Render a label widget.
  *
  * Accepts the following keys in $data:
  *
  * - `text` The text for the label.
  * - `input` The input that can be formatted into the label if the template allows it.
  * - `escape` Set to false to disable HTML escaping.
  *
  * All other attributes will be converted into HTML attributes.
  *
  * @param array $data
  * @return string
  */
 public function render(array $data)
 {
     $data += ['text' => '', 'input' => '', 'escape' => true];
     return $this->_templates->format('label', ['text' => $data['escape'] ? h($data['text']) : $data['text'], 'input' => $data['input'], 'attrs' => $this->_templates->formatAttributes($data, ['text', 'input'])]);
 }
Пример #20
0
 /**
  * Render a button.
  *
  * This method accepts a number of keys:
  *
  * - `text` The text of the button. Unlike all other form controls, buttons
  *   do not escape their contents by default.
  * - `escape` Set to true to enable escaping on all attributes.
  * - `type` The button type defaults to 'submit'.
  *
  * Any other keys provided in $data will be converted into HTML attributes.
  *
  * @param array $data The data to build a button with.
  * @param \Cake\View\Form\ContextInterface $context The current form context.
  * @return string
  */
 public function render(array $data, ContextInterface $context)
 {
     $data += ['text' => '', 'type' => 'submit', 'escape' => false];
     return $this->_templates->format('button', ['text' => $data['escape'] ? h($data['text']) : $data['text'], 'attrs' => $this->_templates->formatAttributes($data, ['text'])]);
 }