mirror of
https://github.com/retailcrm/NelmioApiDocBundle.git
synced 2025-02-09 02:59:27 +03:00
Fix some bugs and confings
This commit is contained in:
parent
f9eacee3fd
commit
2de03859c0
@ -37,11 +37,11 @@ class ObjectModelDescriber implements ModelDescriberInterface, ModelRegistryAwar
|
||||
public function __construct(
|
||||
PropertyInfoExtractorInterface $propertyInfo,
|
||||
Reader $reader,
|
||||
array $propertyDescribers
|
||||
$propertyDescribers
|
||||
) {
|
||||
$this->propertyInfo = $propertyInfo;
|
||||
$this->propertyDescribers = $propertyDescribers;
|
||||
$this->doctrineReader = $reader;
|
||||
$this->propertyDescribers = $propertyDescribers;
|
||||
}
|
||||
|
||||
public function describe(Model $model, Schema $schema)
|
||||
@ -93,21 +93,28 @@ class ObjectModelDescriber implements ModelDescriberInterface, ModelRegistryAwar
|
||||
}
|
||||
|
||||
$type = $types[0];
|
||||
foreach ($this->propertyDescribers as $propertyDescriber) {
|
||||
if ($propertyDescriber instanceof ModelRegistryAwareInterface) {
|
||||
$propertyDescriber->setModelRegistry($this->modelRegistry);
|
||||
}
|
||||
if ($propertyDescriber->supports($type)) {
|
||||
$propertyDescriber->describe($type, $property, $model->getGroups());
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
throw new \Exception(sprintf('Type "%s" is not supported in %s::$%s. You may use the `@SWG\Property(type="")` annotation to specify it manually.', $type->getBuiltinType(), $class, $propertyName));
|
||||
$this->describeProperty($type, $model, $property);
|
||||
}
|
||||
}
|
||||
|
||||
private function describeProperty(Type $type, Model $model, Schema $property)
|
||||
{
|
||||
foreach ($this->propertyDescribers as $propertyDescriber) {
|
||||
if ($propertyDescriber instanceof ModelRegistryAwareInterface) {
|
||||
$propertyDescriber->setModelRegistry($this->modelRegistry);
|
||||
}
|
||||
if ($propertyDescriber->supports($type)) {
|
||||
$propertyDescriber->describe($type, $property, $model->getGroups());
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
throw new \Exception(sprintf('Type "%s" is not supported in %s::$%s. You may use the `@SWG\Property(type="")` annotation to specify it manually.', $type->getBuiltinType(), $class, $propertyName));
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function supports(Model $model): bool
|
||||
{
|
||||
return Type::BUILTIN_TYPE_OBJECT === $model->getType()->getBuiltinType() && class_exists($model->getType()->getClassName());
|
||||
|
@ -23,7 +23,7 @@ class ArrayPropertyDescriber implements PropertyDescriberInterface, ModelRegistr
|
||||
/** @var PropertyDescriberInterface[] */
|
||||
private $propertyDescribers;
|
||||
|
||||
public function __construct(array $propertyDescribers)
|
||||
public function __construct($propertyDescribers = [])
|
||||
{
|
||||
$this->propertyDescribers = $propertyDescribers;
|
||||
}
|
||||
|
@ -12,11 +12,12 @@
|
||||
namespace Nelmio\ApiDocBundle\PropertyDescriber;
|
||||
|
||||
use EXSyst\Component\Swagger\Schema;
|
||||
use Nelmio\ApiDocBundle\Describer\ModelRegistryAwareInterface;
|
||||
use Nelmio\ApiDocBundle\Describer\ModelRegistryAwareTrait;
|
||||
use Nelmio\ApiDocBundle\Model\Model;
|
||||
use Symfony\Component\PropertyInfo\Type;
|
||||
|
||||
class ObjectPropertyDescriber implements PropertyDescriberInterface
|
||||
class ObjectPropertyDescriber implements PropertyDescriberInterface, ModelRegistryAwareInterface
|
||||
{
|
||||
use ModelRegistryAwareTrait;
|
||||
|
||||
|
@ -41,7 +41,7 @@
|
||||
<service id="nelmio_api_doc.model_describers.object" class="Nelmio\ApiDocBundle\ModelDescriber\ObjectModelDescriber" public="false">
|
||||
<argument type="service" id="property_info" />
|
||||
<argument type="service" id="annotation_reader" />
|
||||
<argument type="tagged_iterator" id="nelmio_api_doc.property_describer" />
|
||||
<argument type="tagged_iterator" tag="nelmio_api_doc.property_describer" />
|
||||
|
||||
<tag name="nelmio_api_doc.model_describer" />
|
||||
</service>
|
||||
@ -51,31 +51,33 @@
|
||||
</service>
|
||||
|
||||
<!-- Property Describers -->
|
||||
<service id="nelmio_api_doc.property_describers.array" class="Nelmio\ApiDocBundle\ModelDescriber\ArrayPropertyDescriber" public="false">
|
||||
<service id="nelmio_api_doc.property_describers.array" class="Nelmio\ApiDocBundle\PropertyDescriber\ArrayPropertyDescriber" public="false">
|
||||
<argument type="tagged_iterator" tag="nelmio_api_doc.property_describer" />
|
||||
|
||||
<tag name="nelmio_api_doc.property_describer" />
|
||||
</service>
|
||||
|
||||
<service id="nelmio_api_doc.property_describers.boolean" class="Nelmio\ApiDocBundle\ModelDescriber\BooleanPropertyDescriber" public="false">
|
||||
<service id="nelmio_api_doc.property_describers.boolean" class="Nelmio\ApiDocBundle\PropertyDescriber\BooleanPropertyDescriber" public="false">
|
||||
<tag name="nelmio_api_doc.property_describer" />
|
||||
</service>
|
||||
|
||||
<service id="nelmio_api_doc.property_describers.float" class="Nelmio\ApiDocBundle\ModelDescriber\FloatPropertyDescriber" public="false">
|
||||
<service id="nelmio_api_doc.property_describers.float" class="Nelmio\ApiDocBundle\PropertyDescriber\FloatPropertyDescriber" public="false">
|
||||
<tag name="nelmio_api_doc.property_describer" />
|
||||
</service>
|
||||
|
||||
<service id="nelmio_api_doc.property_describers.integer" class="Nelmio\ApiDocBundle\ModelDescriber\IntegerPropertyDescriber" public="false">
|
||||
<service id="nelmio_api_doc.property_describers.integer" class="Nelmio\ApiDocBundle\PropertyDescriber\IntegerPropertyDescriber" public="false">
|
||||
<tag name="nelmio_api_doc.property_describer" />
|
||||
</service>
|
||||
|
||||
<service id="nelmio_api_doc.property_describers.string" class="Nelmio\ApiDocBundle\ModelDescriber\StringPropertyDescriber" public="false">
|
||||
<service id="nelmio_api_doc.property_describers.string" class="Nelmio\ApiDocBundle\PropertyDescriber\StringPropertyDescriber" public="false">
|
||||
<tag name="nelmio_api_doc.property_describer" />
|
||||
</service>
|
||||
|
||||
<service id="nelmio_api_doc.property_describers.date_time" class="Nelmio\ApiDocBundle\ModelDescriber\DateTimePropertyDescriber" public="false">
|
||||
<service id="nelmio_api_doc.property_describers.date_time" class="Nelmio\ApiDocBundle\PropertyDescriber\DateTimePropertyDescriber" public="false">
|
||||
<tag name="nelmio_api_doc.property_describer" />
|
||||
</service>
|
||||
|
||||
<service id="nelmio_api_doc.property_describers.object" class="Nelmio\ApiDocBundle\ModelDescriber\ObjectPropertyDescriber" public="false">
|
||||
<service id="nelmio_api_doc.property_describers.object" class="Nelmio\ApiDocBundle\PropertyDescriber\ObjectPropertyDescriber" public="false">
|
||||
<tag name="nelmio_api_doc.property_describer" priority="-1000" />
|
||||
</service>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user