13
13
use Laravel \Nova \Actions \ActionResource ;
14
14
use Laravel \Nova \Http \Requests \NovaRequest ;
15
15
use Maatwebsite \Excel \Concerns \ToModel as ModelImporter ;
16
+ use SimonHamp \LaravelNovaCsvImport \Http \Requests \ImportNovaRequest ;
16
17
17
18
class ImportController
18
19
{
@@ -27,7 +28,7 @@ public function __construct(ModelImporter $importer, Filesystem $filesystem)
27
28
$ this ->filesystem = $ filesystem ;
28
29
}
29
30
30
- public function configure (NovaRequest $ request , string $ file ): Response
31
+ public function configure (ImportNovaRequest $ request , string $ file ): Response
31
32
{
32
33
$ file_name = pathinfo ($ file , PATHINFO_FILENAME );
33
34
@@ -127,7 +128,7 @@ public function preview(NovaRequest $request, string $file): Response
127
128
);
128
129
}
129
130
130
- public function import (NovaRequest $ request )
131
+ public function import (ImportNovaRequest $ request )
131
132
{
132
133
$ file = $ request ->input ('file ' );
133
134
@@ -140,6 +141,8 @@ public function import(NovaRequest $request)
140
141
$ resource_name = $ config ['resource ' ];
141
142
142
143
$ resource = Nova::resourceInstanceForKey ($ resource_name );
144
+
145
+ $ request ->setImportResource (get_class ($ resource ));
143
146
$ rules = $ this ->extractValidationRules ($ resource , $ request )->toArray ();
144
147
$ model_class = $ resource ->resource ::class;
145
148
@@ -195,7 +198,7 @@ public function review(NovaRequest $request, string $file): Response
195
198
);
196
199
}
197
200
198
- protected function getAvailableFieldsForImport (string $ resource , NovaRequest $ request ): array
201
+ protected function getAvailableFieldsForImport (string $ resource , ImportNovaRequest $ request ): array
199
202
{
200
203
$ novaResource = new $ resource (new $ resource ::$ model );
201
204
$ fieldsCollection = collect ($ novaResource ->creationFields ($ request ));
@@ -207,6 +210,8 @@ protected function getAvailableFieldsForImport(string $resource, NovaRequest $re
207
210
}
208
211
209
212
$ fields = $ fieldsCollection ->map (function (Field $ field ) use ($ novaResource , $ request ) {
213
+ $ request ->setImportResource ($ novaResource );
214
+
210
215
return [
211
216
'name ' => $ field ->name ,
212
217
'attribute ' => $ field ->attribute ,
@@ -323,4 +328,4 @@ protected function getDisk(): ?string
323
328
{
324
329
return config ('csv-import.disk ' );
325
330
}
326
- }
331
+ }
0 commit comments