Skip to content

Commit 62cf836

Browse files
authored
Merge pull request #10 from netgen/PROSTORIA-534-add-matrix-field-support
Prostoria 534 add matrix field support
2 parents dbbde90 + e8ce0c4 commit 62cf836

File tree

5 files changed

+70
-0
lines changed

5 files changed

+70
-0
lines changed

bundle/Resources/config/services/openapi/ibexa/field_value_schema_providers.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,8 @@ services:
108108
class: Netgen\OpenApiIbexa\OpenApi\SchemaProvider\Ibexa\FieldValue\UrlFieldValueSchemaProvider
109109
tags:
110110
- { name: netgen.openapi_ibexa.ibexa.field_value_schema_provider, identifier: ezurl }
111+
112+
netgen.openapi_ibexa.ibexa.field_value_schema_provider.matrix:
113+
class: Netgen\OpenApiIbexa\OpenApi\SchemaProvider\Ibexa\FieldValue\MatrixFieldValueSchemaProvider
114+
tags:
115+
- { name: netgen.openapi_ibexa.ibexa.field_value_schema_provider, identifier: ezmatrix }

bundle/Resources/config/services/page/visitors.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,8 @@ services:
191191
class: Netgen\OpenApiIbexa\Page\Output\Visitor\IbexaFieldValue\UrlFieldValueVisitor
192192
tags:
193193
- { name: netgen.openapi_ibexa.page.output.visitor }
194+
195+
netgen.openapi_ibexa.page.output.visitor.ibexa_field_value.matrix:
196+
class: Netgen\OpenApiIbexa\Page\Output\Visitor\IbexaFieldValue\MatrixFieldValueVisitor
197+
tags:
198+
- { name: netgen.openapi_ibexa.page.output.visitor }
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Netgen\OpenApiIbexa\OpenApi\SchemaProvider\Ibexa\FieldValue;
6+
7+
use Netgen\OpenApi\Model\Schema;
8+
9+
final class MatrixFieldValueSchemaProvider implements FieldValueSchemaProviderInterface
10+
{
11+
public function provideFieldValueSchema(): Schema
12+
{
13+
return new Schema\ArraySchema(
14+
new Schema\ObjectSchema(
15+
[
16+
'type' => new Schema\StringSchema(),
17+
'value' => new Schema\StringSchema(),
18+
],
19+
null,
20+
['type', 'value'],
21+
),
22+
);
23+
}
24+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Netgen\OpenApiIbexa\Page\Output\Visitor\IbexaFieldValue;
6+
7+
use Ibexa\FieldTypeMatrix\FieldType\Value as MatrixValue;
8+
use Ibexa\FieldTypeMatrix\FieldType\Value\Row;
9+
use Netgen\OpenApiIbexa\Page\Output\OutputVisitor;
10+
use Netgen\OpenApiIbexa\Page\Output\VisitorInterface;
11+
12+
use function array_map;
13+
use function iterator_to_array;
14+
15+
/**
16+
* @implements \Netgen\OpenApiIbexa\Page\Output\VisitorInterface<\Ibexa\FieldTypeMatrix\FieldType\Value>
17+
*/
18+
final class MatrixFieldValueVisitor implements VisitorInterface
19+
{
20+
public function accept(object $value): bool
21+
{
22+
return $value instanceof MatrixValue;
23+
}
24+
25+
/**
26+
* @return array<int, array<string, string>>
27+
*/
28+
public function visit(object $value, OutputVisitor $outputVisitor, array $parameters = []): array
29+
{
30+
return array_map(
31+
static fn (Row $row): array => $row->getCells(),
32+
iterator_to_array($value->getRows()),
33+
);
34+
}
35+
}

phpstan.neon

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ parameters:
99
- '#Netgen\\TagsBundle\\Core\\FieldType\\Tags\\Value#'
1010
- '#Netgen\\Bundle\\EnhancedSelectionBundle\\Core\\FieldType\\EnhancedSelection\\Value#'
1111
- '#Netgen\\Bundle\\ContentTypeListBundle\\Core\\FieldType\\ContentTypeList\\Value#'
12+
- '#Ibexa\\FieldTypeMatrix\\FieldType\\Value#'

0 commit comments

Comments
 (0)