/** * @param string $fieldType * * @return string */ protected function getIdFieldRequirement($fieldType) { $result = $this->valueNormalizer->getRequirement($fieldType, [RequestType::REST, RequestType::JSON_API]); if (ValueNormalizer::DEFAULT_REQUIREMENT === $result) { $result = '[^\\.]+'; } return $result; }
/** * @param ApiDoc $annotation * @param FilterCollection $filters */ protected function addFilters(ApiDoc $annotation, FilterCollection $filters) { foreach ($filters as $key => $filter) { if ($filter instanceof StandaloneFilter) { $options = ['description' => $filter->getDescription(), 'requirement' => $this->valueNormalizer->getRequirement($filter->getDataType(), [RequestType::REST, RequestType::JSON_API], $filter->isArrayAllowed())]; $default = $filter->getDefaultValueString(); if (!empty($default)) { $options['default'] = $default; } $annotation->addFilter($key, $options); } } }
/** * @param Route $route * @param string $entityClass */ protected function setIdRequirement(Route $route, $entityClass) { $metadata = $this->doctrineHelper->getEntityMetadataForClass($entityClass); $idFields = $metadata->getIdentifierFieldNames(); $idFieldCount = count($idFields); if ($idFieldCount === 1) { // single identifier $route->setRequirement(self::ID_ATTRIBUTE, $this->valueNormalizer->getRequirement($metadata->getTypeOfField(reset($idFields)), [RequestType::REST, RequestType::JSON_API])); } elseif ($idFieldCount > 1) { // combined identifier $requirements = []; foreach ($idFields as $field) { $requirements[] = $field . '=' . $this->valueNormalizer->getRequirement($metadata->getTypeOfField($field), [RequestType::REST, RequestType::JSON_API]); } $route->setRequirement(self::ID_ATTRIBUTE, implode(RestRequest::ARRAY_DELIMITER, $requirements)); } }
/** * @dataProvider getArrayRequirementProvider */ public function testGetArrayRequirement($expectedValue, $dataType, $requestType) { $result = $this->valueNormalizer->getRequirement($dataType, $requestType, true); $this->assertSame($expectedValue, $result); }