'name:json_string', 'Type' => 'type:json_string', 'Label' => 'label:json_string', 'Placeholder' => 'placeholder:json_string', 'Order' => 'order:json_int', 'Mandatory' => 'mandatory:json_boolean', ]; protected static $allowed_relations = [ 'values', ]; /** * @param null $expand * @param array $fields * @param array $relations * @param array $params * @return array */ public function serialize($expand = null, array $fields = array(), array $relations = array(), array $params = array() ) { $question = $this->object; if (!$question instanceof ExtraQuestionType) return []; if(!count($relations)) $relations = $this->getAllowedRelations(); $values = parent::serialize($expand, $fields, $relations, $params); if(in_array('values', $relations) && $question->allowsValues()) { $question_values = []; foreach ($question->getValues() as $value) { $question_values[] = $value->getId(); } $values['values'] = $question_values; } if (!empty($expand)) { $exp_expand = explode(',', $expand); foreach ($exp_expand as $relation) { switch (trim($relation)) { case 'values': { if (!$question->allowsValues()) break; unset($values['values']); $question_values = []; foreach ($question->getValues() as $value) { $question_values[] = SerializerRegistry::getInstance()->getSerializer($value)->serialize(); } $values['values'] = $question_values; } break; } } } return $values; } }