Skip to content

Commit 41ebb62

Browse files
committed
Add new FormProvider
1 parent a9fce19 commit 41ebb62

6 files changed

Lines changed: 101 additions & 10 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php declare(strict_types=1);
22

3-
namespace Loki\AdminComponents\Form;
3+
namespace Loki\AdminComponents\Form\Field;
44

55
use Loki\AdminComponents\Component\Form\FormRepository;
66
use Loki\AdminComponents\Form\Field\Field;

Form/Form.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
use Loki\AdminComponents\Form\Field\Field;
77
use Loki\AdminComponents\Form\Fieldset\Fieldset;
8-
use Loki\AdminComponents\Ui\Button;
8+
use Loki\AdminComponents\Ui\Button\Button;
99

1010
class Form
1111
{

Form/FormBuilder.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66
use Loki\AdminComponents\Form\Field\FieldFactory;
77
use Loki\AdminComponents\Form\Fieldset\Fieldset;
88
use Loki\AdminComponents\Form\Fieldset\FieldsetFactory;
9-
use Loki\AdminComponents\Ui\Button;
10-
use Loki\AdminComponents\Ui\ButtonFactory;
9+
use Loki\AdminComponents\Ui\Button\Button;
10+
use Loki\AdminComponents\Ui\Button\ButtonFactory;
1111
use Magento\Framework\View\Element\AbstractBlock;
12+
use Magento\Framework\View\Element\Template;
1213
use Magento\Framework\View\LayoutInterface;
1314

1415
class FormBuilder
@@ -29,7 +30,7 @@ public function createForm(string $code): Form
2930

3031
public function createField(array $data = []): Field
3132
{
32-
$block = $this->layout->createBlock(AbstractBlock::class);
33+
$block = $this->layout->createBlock(Template::class);
3334
return $this->fieldFactory->create($block, $data);
3435
}
3536

Provider/FormProviderInterface.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,8 @@
44
namespace Loki\AdminComponents\Provider;
55

66
use Loki\AdminComponents\Form\Form;
7-
use Loki\AdminComponents\Grid\Column\Column;
87

98
interface FormProviderInterface
109
{
11-
/**
12-
* @return Column[]
13-
*/
1410
public function getForm(): Form;
15-
public function getData(): array;
1611
}

Provider/ItemProviderInterface.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Loki\AdminComponents\Provider;
5+
6+
use Loki\AdminComponents\Form\Form;
7+
use Magento\Framework\DataObject;
8+
9+
interface ItemProviderInterface
10+
{
11+
public function getItem(int|string $identifier): DataObject;
12+
13+
public function saveItem(DataObject $item): void;
14+
15+
public function deleteItem(DataObject $item): void;
16+
17+
public function duplicateItem(DataObject $item): void;
18+
}

ProviderHandler/FormHandler.php

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Loki\AdminComponents\ProviderHandler;
5+
6+
use Loki\AdminComponents\Provider\FormProviderInterface;
7+
use Magento\Framework\DataObject;
8+
use Magento\Framework\DataObjectFactory;
9+
use Loki\AdminComponents\Grid\State as GridState;
10+
11+
class FormHandler implements ProviderHandlerInterface
12+
{
13+
public function __construct(
14+
private DataObjectFactory $dataObjectFactory,
15+
) {
16+
}
17+
18+
public function match(object $provider): bool
19+
{
20+
return $provider instanceof FormProviderInterface;
21+
}
22+
23+
public function getItem(object $provider, int|string $identifier): DataObject
24+
{
25+
/** @var FormProviderInterface $provider */
26+
return $provider->getItem($identifier);
27+
}
28+
29+
public function createItem(object $provider, object|null $factory): DataObject
30+
{
31+
/** @var FormProviderInterface $provider */
32+
return $this->dataObjectFactory->create();
33+
}
34+
35+
public function getItems(object $provider, GridState $gridState): array
36+
{
37+
return [];
38+
}
39+
40+
public function saveItem(object $provider, DataObject $item)
41+
{
42+
/** @var FormProviderInterface $provider */
43+
$provider->saveItem($item);
44+
}
45+
46+
public function deleteItem(object $provider, DataObject $item)
47+
{
48+
/** @var FormProviderInterface $provider */
49+
$provider->deleteItem($item);
50+
}
51+
52+
public function duplicateItem(object $provider, DataObject $item)
53+
{
54+
/** @var FormProviderInterface $provider */
55+
$provider->duplicateItem($item);
56+
}
57+
58+
public function getColumns(object $provider): array
59+
{
60+
return [];
61+
}
62+
63+
public function getModelClass(object $provider): bool|string
64+
{
65+
return false;
66+
}
67+
68+
public function getResourceModelClass(object $provider): bool|string
69+
{
70+
return false;
71+
}
72+
73+
public function getPrimaryKey(object $provider): ?string
74+
{
75+
return null;
76+
}
77+
}

0 commit comments

Comments
 (0)