praiadeseselle/wire/modules/Inputfield/InputfieldHidden.module
2022-03-08 15:55:41 +01:00

66 lines
1.8 KiB
Text

<?php namespace ProcessWire;
/**
* An Inputfield for handling HTML “hidden” form inputs
*
* @property bool $renderValueAsInput Render the hidden input, even when in renderValue mode (default=false)
* @property string $initValue Initial populated value if value attribute not separately populated (default='')
*
*/
class InputfieldHidden extends Inputfield {
public static function getModuleInfo() {
return array(
'title' => __('Hidden', __FILE__), // Module Title
'version' => 101,
'summary' => __('Hidden value in a form', __FILE__), // Module Summary
'permanent' => true,
);
}
public function __construct() {
parent::__construct();
$this->setAttribute('type', 'hidden');
$this->set('renderValueAsInput', false);
$this->initValue = '';
}
public function ___render() {
return "<input " . $this->getAttributesString() . " />";
}
public function ___renderValue() {
if($this->renderValueAsInput) {
return $this->render();
} else {
return parent::___renderValue();
}
}
public function getAttributes() {
$attrs = parent::getAttributes();
if(!strlen($attrs['value']) && $this->initValue) $attrs['value'] = $this->initValue;
return $attrs;
}
public function ___getConfigInputfields() {
$inputfields = parent::___getConfigInputfields();
// remove config fields that don't need to be here
$f = $inputfields->getChildByName('collapsed');
$inputfields->remove($f);
$f = $inputfields->getChildByName('columnWidth');
$inputfields->remove($f);
/** @var InputfieldText $field */
$field = $this->modules->get('InputfieldText');
$field->setAttribute('name', 'initValue');
$field->label = $this->_('Value');
$field->description = $this->_('Value to be populated in this hidden field.');
$field->setAttribute('value', $this->initValue);
$inputfields->append($field);
return $inputfields;
}
}