Skip to content

Commit c976287

Browse files
authored
Merge pull request #47 from morcov/fixing-belong-to-relation
Fixing belong to relation
2 parents 56b4f3c + caf34a4 commit c976287

File tree

2 files changed

+47
-3
lines changed

2 files changed

+47
-3
lines changed

src/Http/Controllers/ImportController.php

+8-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Laravel\Nova\Resource;
1313
use Laravel\Nova\Rules\Relatable;
1414
use Maatwebsite\Excel\Concerns\ToModel as ModelImporter;
15+
use SimonHamp\LaravelNovaCsvImport\Http\Requests\ImportNovaRequest;
1516

1617
class ImportController
1718
{
@@ -26,7 +27,7 @@ public function __construct(ModelImporter $importer, Filesystem $filesystem)
2627
$this->filesystem = $filesystem;
2728
}
2829

29-
public function configure(NovaRequest $request, string $file): Response
30+
public function configure(ImportNovaRequest $request, string $file): Response
3031
{
3132
$file_name = pathinfo($file, PATHINFO_FILENAME);
3233

@@ -125,7 +126,7 @@ public function preview(NovaRequest $request, string $file): Response
125126
);
126127
}
127128

128-
public function import(NovaRequest $request)
129+
public function import(ImportNovaRequest $request)
129130
{
130131
$file = $request->input('file');
131132

@@ -138,6 +139,8 @@ public function import(NovaRequest $request)
138139
$resource_name = $config['resource'];
139140

140141
$resource = Nova::resourceInstanceForKey($resource_name);
142+
143+
$request->setImportResource(get_class($resource));
141144
$rules = $this->extractValidationRules($resource, $request)->toArray();
142145
$model_class = $resource->resource::class;
143146

@@ -193,7 +196,7 @@ public function review(NovaRequest $request, string $file): Response
193196
);
194197
}
195198

196-
protected function getAvailableFieldsForImport(string $resource, NovaRequest $request): array
199+
protected function getAvailableFieldsForImport(string $resource, ImportNovaRequest $request): array
197200
{
198201
$novaResource = new $resource(new $resource::$model);
199202
$fieldsCollection = collect($novaResource->creationFields($request));
@@ -205,6 +208,8 @@ protected function getAvailableFieldsForImport(string $resource, NovaRequest $re
205208
}
206209

207210
$fields = $fieldsCollection->map(function (Field $field) use ($novaResource, $request) {
211+
$request->setImportResource($novaResource);
212+
208213
return [
209214
'name' => $field->name,
210215
'attribute' => $field->attribute,
+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace SimonHamp\LaravelNovaCsvImport\Http\Requests;
4+
5+
use Laravel\Nova\Http\Requests\NovaRequest;
6+
7+
class ImportNovaRequest extends NovaRequest
8+
{
9+
/**
10+
* @var
11+
*/
12+
protected $importResource;
13+
14+
/**
15+
* @param mixed $resource
16+
*/
17+
public function setImportResource($resource): self
18+
{
19+
$this->importResource = $resource;
20+
21+
return $this;
22+
}
23+
24+
/**
25+
* Get the class name of the resource being requested.
26+
*
27+
* @return class-string<\Laravel\Nova\Resource>
28+
*
29+
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
30+
*/
31+
public function resource()
32+
{
33+
return tap(once(function () {
34+
return $this->importResource;
35+
}), function ($resource) {
36+
abort_if(is_null($resource), 404);
37+
});
38+
}
39+
}

0 commit comments

Comments
 (0)