/** * Make data transfer (set values) from Form to Model. * * @access protected * @param string $sName * @param array $aValue * @param Form\Field $oFormField * @return boolean * @since 1.0.0-alpha * @version 1.0.0-alpha */ protected function makeDataTransfer($sName, $aValue, Form\Field &$oFormField) { $aCheckedLanguages = $oFormField->getFormObject()->getCheckedLanguages(); if ($oFormField->isMultilanguage()) { foreach (Core::getLanguages() as $sLang) { if (!isset($aValue[$sLang]) && in_array($sLang, $aCheckedLanguages)) { $aValue[$sLang] = NULL; } } } foreach ($aValue as $sLang => $aAllValues) { if (!in_array($sLang, $aCheckedLanguages)) { continue; } if (!empty($aAllValues)) { $mValue = $oFormField->getQuantity() === 1 ? array_shift($aAllValues) : array_values($aAllValues); } else { $mValue = NULL; } if ($sLang === 'und') { if (is_array($mValue)) { $mValue = array_values($mValue); } $this->getModel()->{$sName} = $mValue; } else { $this->getModel()->getLocales($sLang)->{$sName} = $mValue; } } return TRUE; }
/** * Add singleton field to this form. * * @access public * @param Form\Field $oField * @return Form * @throws Exception * @since 1.0.0-alpha * @version 1.0.0-alpha */ public function addSingleton(Field $oField) { if ($oField->getFormObject()->getName() !== 'singletons') { throw new Exception('This field is not a singleton.'); } $oField->setFormIfSingleton($this); $this->fields[$oField->getName()] = $oField; return $this; }