-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStorageController.php
More file actions
123 lines (109 loc) · 3.46 KB
/
StorageController.php
File metadata and controls
123 lines (109 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php
namespace SyncEngine\Controller\Admin;
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use SyncEngine\Attribute\MenuItem;
use SyncEngine\Controller\Admin\Abstract\EntityController;
use SyncEngine\Entity\Storage;
use SyncEngine\Form\StorageFormType;
use SyncEngine\Model\StorageModel;
class StorageController extends EntityController
{
#[Route( '/json/storage', 'json_storage' )]
public function handleJson( Request $request ): JsonResponse
{
$id = $request->request->get( 'id' );
$id = ( $id && is_numeric( $id ) ) ? $id : 0;
$model = ( $id ) ? StorageModel::get( $id ) : StorageModel::create();
return $this->_handleJsonRequest( $model, $request );
}
#[Route( '/storages', name: 'list_storages' )]
#[MenuItem( menu: 'main', route: 'syncengine_list_storages', label: 'Storages', parent: 'entities', icon: 'storage', position: 5 )]
public function renderList( Request $request ): Response
{
$model = StorageModel::create();
$query = $this->_getListQuery( $request );
$items = $this->_handleActionList( $model, $query );
return $this->render(
'admin/storage/list.html.twig',
[
'list' => [
'query' => $query,
'items' => $items,
'total' => $this->_handleActionTotal( $model, $query ),
],
'breadcrumbs' => [
[
'title' => $this->trans( 'Storages' ),
'current' => true,
],
],
]
);
}
#[Route( '/storage/create', name: 'create_storage' )]
public function renderCreate( Request $request ): Response
{
$storage = StorageModel::create();
$form = $this->form( $storage, $request );
if ( $form->isSubmitted() && $form->isValid() ) {
$this->addFlash( 'success', $this->trans( 'Successfully created storage!' ) );
return $this->redirectToRoute( 'syncengine_edit_storage', [ 'id' => $storage->getId() ] );
}
return $this->render(
'admin/storage/create.html.twig',
[
'header' => $this->trans( 'New storage' ),
'backlink' => true,
'form' => $form,
'breadcrumbs' => [
[
'link' => $this->generateUrl( 'syncengine_list_storages' ),
'title' => $this->trans( 'Storages' ),
],
[
'title' => $this->trans( 'Create' ),
'current' => true,
],
],
]
);
}
#[Route( '/storage/edit/{id}', name: 'edit_storage' )]
public function renderEdit( #[MapEntity(id: 'id')] Storage $storage, Request $request ): Response
{
$form = $this->form( $storage, $request );
if ( $form->isSubmitted() && $form->isValid() ) {
$this->addFlash( 'success', $this->trans( 'Successfully edited storage!' ) );
}
return $this->render(
'admin/storage/edit.html.twig',
[
'header' => $this->trans( 'Edit storage' ),
'backlink' => true,
'form' => $form,
'breadcrumbs' => [
[
'link' => $this->generateUrl( 'syncengine_list_storages' ),
'title' => $this->trans( 'Storages' ),
],
[
'title' => $this->trans( 'Edit' ),
'current' => true,
],
],
]
);
}
protected function form( Storage|StorageModel $storage, Request $request, $saveLabel = '' ): FormInterface
{
if ( $storage instanceof Storage ) {
$storage = StorageModel::get( $storage );
}
return $this->_handleForm( $storage, StorageFormType::class, $request, $saveLabel );
}
}