DirectorObjectForm: methods dealing with fields

This commit is contained in:
Thomas Gelf 2015-07-30 12:46:08 +02:00
parent 364904e8e7
commit 9d4bd323a8

View File

@ -3,6 +3,7 @@
namespace Icinga\Module\Director\Web\Form;
use Icinga\Module\Director\Objects\IcingaObject;
use Icinga\Module\Director\Objects\DirectorDatafield;
use Zend_Form_Element_Select as Zf_Select;
abstract class DirectorObjectForm extends QuickForm
@ -150,6 +151,44 @@ abstract class DirectorObjectForm extends QuickForm
return $this;
}
public function addFields()
{
$object = $this->object();
$fields = $object->getResolvedFields();
$vars = $object->vars();
foreach ($fields as $field) {
$varname = $field->varname;
if (isset($vars->$varname)) {
$value = $vars->{$varname}->getValue();
} else {
$value = null;
}
$inherited = null; // Just testing
$this->addField($field, $value, $inherited);
}
}
protected function addField($field, $value = null, $inherited = null)
{
$datafield = DirectorDatafield::load($field->datafield_id, $this->getDb());
$datatype = new $datafield->datatype;
$datatype->setSettings($datafield->getSettings());
$name = 'var_' . $datafield->varname;
$el = $datatype->getFormElement($name, $this);
$el->setLabel($datafield->caption);
$el->setDescription($datafield->description);
if ($field->is_required === 'y') {
$el->setRequired(true);
}
$this->addElement($el);
$this->setElementValue($name, $value, $inherited);
}
protected function setElementValue($name, $value = null, $inherited = null)
{
$el = $this->getElement($name);