File tree Expand file tree Collapse file tree 5 files changed +83
-0
lines changed Expand file tree Collapse file tree 5 files changed +83
-0
lines changed Original file line number Diff line number Diff line change @@ -108,4 +108,12 @@ public function productForm(LiveDemoRepository $liveDemoRepository): Response
108
108
'demo ' => $ liveDemoRepository ->find ('product_form ' ),
109
109
]);
110
110
}
111
+
112
+ #[Route('/upload ' , name: 'app_live_components_upload ' )]
113
+ public function uploadFiles (LiveDemoRepository $ liveDemoRepository ): Response
114
+ {
115
+ return $ this ->render ('live_component_demo/upload.html.twig ' , parameters: [
116
+ 'demo ' => $ liveDemoRepository ->find ('upload ' ),
117
+ ]);
118
+ }
111
119
}
Original file line number Diff line number Diff line change @@ -98,6 +98,15 @@ public function findAll(): array
98
98
route: 'app_live_components_product_form ' ,
99
99
longDescription: <<<EOF
100
100
Open a child modal component to create a new Category.
101
+ EOF
102
+ ),
103
+ new LiveDemo (
104
+ 'upload ' ,
105
+ name: 'Uploading files ' ,
106
+ description: 'Upload files to live component. ' ,
107
+ route: 'app_live_components_upload ' ,
108
+ longDescription: <<<EOF
109
+ Send files to be handled by live component.
101
110
EOF
102
111
),
103
112
];
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ declare (strict_types=1 );
4
+
5
+ namespace App \Twig ;
6
+
7
+ use Symfony \Component \HttpFoundation \File \UploadedFile ;
8
+ use Symfony \Component \HttpFoundation \Request ;
9
+ use Symfony \UX \LiveComponent \Attribute \AsLiveComponent ;
10
+ use Symfony \UX \LiveComponent \Attribute \LiveAction ;
11
+ use Symfony \UX \LiveComponent \DefaultActionTrait ;
12
+
13
+ #[AsLiveComponent()]
14
+ class UploadFiles
15
+ {
16
+ use DefaultActionTrait;
17
+
18
+ public ?UploadedFile $ single = null ;
19
+ public array $ multiple = [];
20
+
21
+ #[LiveAction]
22
+ public function sendFiles (Request $ request ): void
23
+ {
24
+ $ this ->single = $ request ->files ->get ('single ' );
25
+ $ this ->multiple = $ request ->files ->all ('multiple ' );
26
+ }
27
+ }
Original file line number Diff line number Diff line change
1
+ <div
2
+ {{ attributes }}
3
+ >
4
+ <p ><strong >Note:</strong > files aren't persisted and will be lost on each rerender if not stored.</p >
5
+ <p >
6
+ Single file: <input type =" file" name =" single" autocomplete =" off" /> <br >
7
+ Current file:
8
+ {% if single %}
9
+ {{ single .clientOriginalName }} ({{ single .clientMimeType }})
10
+ {% else %}
11
+ none
12
+ {% endif %}
13
+ </p >
14
+ <div >
15
+ Multiple files: <input type =" file" name =" multiple[]" autocomplete =" off" multiple /> <br >
16
+ Current files:
17
+ <ul >
18
+ {% for file in multiple %}
19
+ <li >{{ file .clientOriginalName }} ({{ file .clientMimeType }})</li >
20
+ {% else %}
21
+ <li >none</li >
22
+ {% endfor %}
23
+ </ul >
24
+ </div >
25
+ <button data-action =" live#action" data-action-name =" files|sendFiles" >Send files!</button >
26
+ </div >
Original file line number Diff line number Diff line change
1
+ {% extends ' liveDemoBase.html.twig' %}
2
+
3
+ {% block code_block_left %}
4
+ <twig:CodeBlock filename =" src/Twig/UploadFiles.php" height =" 400px" />
5
+ {% endblock %}
6
+
7
+ {% block code_block_right %}
8
+ <twig:CodeBlock filename =" templates/components/UploadFiles.html.twig" height =" 400px" />
9
+ {% endblock %}
10
+
11
+ {% block demo_content %}
12
+ {{ component(' UploadFiles' ) }}
13
+ {% endblock %}
You can’t perform that action at this time.
0 commit comments