【发布时间】:2021-12-15 08:08:02
【问题描述】:
我正在尝试上传多节课。但是有些东西不起作用。我认为 $data->lesson 有问题无法上课,或者 create 的问题真的不知道我是新手 :) 这是我的控制器
public function storeLesson(Lesson $lesson)
{
$data = request()->validate([
'lesson.lesson' => 'required',
'lesson_folder_id.lesson_folder_id' => '',
], [
'lesson.lesson.required' => 'error message',
]);
if (request()->hasFile('lesson')) {
$path = request()->file('lesson')->store('lessons', ['disk' => 'my_files']);
$data->lesson = $path;
}
$create = $lesson->create($data['lesson'],['lesson_folder_id']);
return redirect('/courses')->with('success', 'success message.');
}
文件系统.php
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL') . '/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
],
'my_files' => [
'driver' => 'local',
'root' => public_path() . '/'
]
],
还有我的刀
<form method="POST" action="{{ route('storeLesson') }}" enctype="multipart/form-data">
<div class="mb-3">
@foreach($c->lessonFolders as $f)
{{ $f->name }}
<input hidden name="lesson_folder_id[lesson_folder_id]" type="text" value="{{ $f->id }}">
<label class="form-label" for="customFile"></label>
<input name="lesson[lesson]" type="file" class="form-control" id="customFile">
@foreach($f->lessons as $l)
@if($l->lesson)
TRUE
@endif
@endforeach
@endforeach
</div>
<button class="btn btn-danger" type="submit">upload</button>
</form>
那么我做错了什么?是控制器故障还是我的刀片故障?
【问题讨论】:
-
你必须传递一个名称为
lessons[]或lessons[$id]的数组,键应该是唯一的,在上面的示例中,所有文件的键都是相同的。 -
我在刀片课程[] 中进行了更改,而课程文件夹 ID[] 仍然不起作用
-
当您传递数组时,您可以循环数组并将每个数组存储在数据库中。使用
dd()转储控制器中的值并检查您是否收到所有必要的值 -
@Vaskontrop 您还需要更改控制器中的变量,因为我发布了
lessons而不是lesson。 -
我在控制器中更改了课程,但它仍然不起作用