public function setFormResponse(ActionResponse $response, Form $form, $prefix = '') { $specFields = $this->owner->getSpecification()->getSpecificationFieldSet(ActiveRecordModel::LOAD_REFERENCES); $specFieldArray = $specFields->toArray(); // set select values $selectors = EavFieldCommon::getSelectorValueTypes(); foreach ($specFields as $key => $field) { if (in_array($field->type->get(), $selectors)) { $values = $field->getValuesSet()->toArray(); $specFieldArray[$key]['values'] = array('' => ''); foreach ($values as $value) { $specFieldArray[$key]['values'][$value['ID']] = isset($value['value_lang']) ? $value['value_lang'] : $value['value']; } } } // arrange SpecFields's into groups $specFieldsByGroup = array(); $prevGroupID = -1; $groupClass = $this->getFieldClass() . 'Group'; foreach ($specFieldArray as $field) { $groupID = isset($field[$groupClass]['ID']) ? $field[$groupClass]['ID'] : ''; if ((int) $groupID && $prevGroupID != $groupID) { $prevGroupID = $groupID; } $specFieldsByGroup[$groupID][] = $field; } // get multi language spec fields $multiLingualSpecFields = array(); foreach ($specFields as $key => $field) { if ($field->isTextField()) { $multiLingualSpecFields[] = $field->toArray(); } } if (!$prefix) { $response->set("specFieldList", $specFieldsByGroup); } $response->set("groupClass", $groupClass); $response->set("multiLingualSpecFieldss", $multiLingualSpecFields); // set fields by prefix $prefixed = $response->get("specFieldList_prefix", array()); $prefixed[$prefix] = $specFieldsByGroup; $response->set("specFieldList_prefix", $prefixed); $this->owner->load(); // set fields by owner if ($this->owner instanceof EavObject && ($owner = $this->owner->getOwner())) { $byOwner = $response->get("specFieldListByOwner", array()); $byOwner[get_class($owner)][$owner->getID()] = $specFieldsByGroup; $response->set("specFieldListByOwner", $byOwner); } $form->setData($this->getFormData($prefix)); //$this->setFormValidator($form->getValidator()); }