protected function createFixture(array $data = array()) { $person = new Person('Scheit', '*****@*****.**', 'Philipp', Date::create('21.11.1984')); $formPanel = new EntityFormPanel('Person bearbeiten', $this->getTranslationContainer(), new EntityForm($person, $this->getEntityMeta('Psc\\Doctrine\\TestEntities\\Person')->getSaveRequestMeta($person))); $formPanel->createComponents(); $validator = new ComponentsValidator(new Set(array_merge(array('id' => '17', 'birthday' => '21.11.1984', 'name' => 'Scheit', 'firstName' => 'Philipp ', 'email' => '*****@*****.**', 'yearKnown' => 'true'), $data), $person->getSetMeta()), $formPanel->getEntityForm()->getComponents()); return $validator; }
/** * Erstellt aus dem Request und dem FormPanel ein Set mit allen FormularDaten * * man könnte sich hier auch mal vorstellen die formulardaten im set aufzusplitten * Sicherheit: alle Felder die nicht registriert sind durch Componenten oder den Formpanel (getControlFields) schmeissen hier eine Exception */ public function createFormDataSet(FormData $requestData, EntityFormPanel $panel, Entity $entity) { $meta = $entity->getSetMeta(); // wir müssen die Spezial-Felder vom EntityFormPanel hier tracken foreach ($panel->getControlFields() as $field) { $meta->setFieldType($field, Type::create('String')); } // sonderfeld disabled wird ignored $meta->setFieldType('disabled', Type::create('Array')); try { $set = new Set((array) $requestData, $meta); } catch (\Psc\Data\FieldNotDefinedException $e) { throw \Psc\Exception::create("In den FormularDaten befindet sich ein Feld '%s', welches kein Feld aus Entity getSetMeta ist (%s).", implode('.', $e->field), implode(', ', $e->avaibleFields)); } return $set; }
protected function initFormPanel(\Psc\CMS\EntityFormPanel $panel) { $entity = $panel->getEntity(); $panel->setWhiteListProperties($this->getWhiteListProperties($entity, 'form')); // das wichtigste: wir müssen natürlich subscriben damit die onComponentCreated*() Funktionen auch aufgerufen werden $panel->subscribe($this); $panel->createRightAccordion($this->getEntityMeta()); return $panel; }
protected function initFormPanel(\Psc\CMS\EntityFormPanel $panel) { $panel->setPanelButtons(array('preview', 'save', 'reload', 'save-close')); return parent::initFormPanel($panel); }