/** * Sets the model builder associated to this form * * @param Atomik_Model_Builder $builder */ public function setBuilder(Atomik_Model_Builder $builder) { $this->_builder = $builder; $this->_fields = array(); $options = new Atomik_Options($builder->getOptions($this->_optionPrefix)); $this->setFormTemplate($options->getOption('template', Atomik_Form::getDefaultFormTemplate())); $this->setFieldTemplate($options->getOption('field-template', Atomik_Form::getDefaultFieldTemplate())); $this->setOptions($options->getOptions()); foreach ($builder->getFields() as $modelField) { if ($modelField->getOption('ignore', false, $this->_optionPrefix)) { continue; } $formField = null; $defaultLabel = $modelField->name; if ($builder->isFieldPartOfReference($modelField) && !$modelField->getOption('no-reference', false, $this->_optionPrefix)) { $reference = $builder->getReferenceFromSourceField($modelField); if ($reference->isHasMany()) { continue; } $defaultLabel = $reference->name; $options = $modelField->getOptions($this->_optionPrefix); $options['reference'] = $reference; require_once 'Atomik/Model/Form/Field/Reference.php'; $formField = Atomik_Form_Field_Factory::factory('Atomik_Model_Form_Field_Reference', $modelField->name, $options); } else { $formField = $modelField->getFormField(); } $this->_fields[$modelField->name] = $formField; $this->_labels[$modelField->name] = $modelField->getLabel(); $formField->setParent($this); } }