Laravel 5.7 Недопустимый аргумент для foreach () при зацикливании в контроллере - PullRequest
1 голос
/ 20 мая 2019

Когда я пытаюсь сделать цикл внутри моего контроллера, я получаю ошибку Invalid argument supplied for foreach(), и я не могу понять, почему.У меня есть form, где предполагается загружать несколько файлов

Вот что я получил до сих пор:

use App\SingleApplication;
use App\SingleApplicationFile;

$application = SingleApplication::create([
   'email' => request()->email,
   'name' => request()->name,
    ...// more fields
]);

$allowedfileExtension = ['pdf', 'jpg', 'png', 'docx'];
$files = request()->has('attachment');
if ($files) {
     foreach ($files as $file) {
       $filename = $file->getClientOriginalName();
       $extension = $file->getClientOriginalExtension();
       $filesize = $file->getSize();
       $check = in_array($extension, $allowedfileExtension);

       if ($check) {

         foreach ($file as $att) {
         $filename = Storage::disk('local')->put('attachments', request()->file($att));
          SingleApplicationFile::create([
             'files_id' => $application->id,
             'single_application_id' => $application->id,
             'attachment' => $filename,
             'attachment_name' => $extension,
             'attachment_size' => $filesize,
          ]);
        }
     }
  }
}

Итак, что я здесь не так делаю?

1 Ответ

3 голосов
/ 20 мая 2019

Это логическое значение

$files = request()->hasFile('attachment'); // return  if has file not array of files

Вы должны получить файлы как

$files = request()->file('attachment'); // returns array of files

Или вы можете изменить условие как

$hasfiles = request()->hasFile('attachment');

if ($hasfiles) {

    $files = request()->file('attachment');
    // your rest code

Примечание. Проверка файлов должна выполняться с помощью hasFile, поскольку файл и другие поля разные.

Вот ссылка ссылка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...