Загрузка файла формы OctoberCMS | В foreach указан неверный аргумент ()

Я довольно новичок в OctoberCMS & Laravel. Я настраивал контактную форму, все отлично работает, кроме добавления нескольких файловых вложений. У меня был поиск в Интернете, и я не смог найти решение, почему моя форма не будет отправлена.

Ошибка, о которой идет речь, это «неверный аргумент, предоставленный для foreach () в строке 26»

Строка 26 — первый цикл foreach

Я прикрепил HTML-разметку формы ниже, а также контроллер для формы.

Код PHP

<?php
namespace Bprint\Contact\Components;
use Cms\Classes\ComponentBase;
use Input;
use Mail;
class ContactForm extends ComponentBase{
public function componentDetails(){
return [
'name' => 'Contact Form',
'description' => 'Bprint Contact Form'
];
}
public function onSend(){
$vars = ['fieldName' => Input::get('fieldName'), 'fieldCompany' => Input::get('fieldCompany'), 'fieldEmail' => Input::get('fieldEmail'), 'fieldUpload' => Input::file('fieldUpload'), 'fieldContent' => Input::get('fieldContent')];
$attachments = [];
foreach($vars['fieldUpload'] as $image) {
$attachments[] = $image;
}
Mail::send('bprint.contact::mail.message', $vars, function($message) use ($attachments) {
foreach($attachments as $attachment) {
$params = ['as' => $attachment->getFilename()/*, 'mime' => $mime*/];
$message->attach($attachment->getLocalPath(), $params);
}
$message->to('REDACTED', 'BlueprintCMS');
$message->subject('Blueprint Website | Contact Form"');
});
}
}

HTML-разметка формы

    <form data-request="onSend" data-request-loading="#loading" data-request-error="alert('There was an error sending your message. Please try again shortly, if error persits please email us at [email protected]')" data-request-success="alert('Your message has been sent.')" class="bpsite-form floating-labels">
<fieldset>
<div class="icon">
<label class="bpsite-label" for="bpsiteName">Name</label>
<input name="fieldName" class="user" type="text" id="bpsite-name" required>
</div>
<div class="icon">
<label class="bpsite-label" for="bpsite-company">Company</label>
<input name="fieldCompany" class="company" type="text" id="bpsite-company">
</div>
<div class="icon">
<label class="bpsite-label" for="bpsite-email">Email</label>
<input name="fieldEmail" class="email" type="email" id="bpsite-email" required>
</div>
<input type="file" name="fieldUpload[]" multiple>
</fieldset>
<fieldset>
<div class="icon">
<label class="bpsite-label" for="bpsite-textarea"></label>
<textarea name="fieldContent" class="message" id="bpsite-textarea" required></textarea>
</div>
<div>
<button id="bpsite-button" style="display: none;" class="btn btn-primary form-btn" type="submit">Send</button>
<label for="bpsite-button">
<div class="box">
<span data-text="S">S</span>
<span data-text="E">E</span>
<span data-text="N">N</span>
<span data-text="D">D</span>
</div>
</label>
<div id="loading" style="display: none;">
<div class="col-2 col-sm-2 col-md-2 col-lg-2 col-xl-2">
<img class="img-fluid" src="{{ 'loader.gif'|media }}" alt="Loading..." />
</div>
<div class="col-10 col-sm-10 col-md-10 col-lg-10 col-xl-10">
<div class="alert alert-info">
<p class="body-text">Your message is being sent...</p>
</div>
</div>
</div>
</div>
</fieldset>
</form>

Заранее спасибо всем, кто может помочь мне здесь!

С уважением,
Джек

0

Решение

Вы используете ajax framework от OctoberCMS и хотите загрузить вложение с помощью этой формы, затем вам нужно добавить еще один атрибут данные-запрос-файлы сформировать элемент.

Ваш элемент формы будет выглядеть так:

<form data-request="onSend"data-request-files
data-request-error="alert('There was an error sending your message. Please try again shortly, if error persits please email us at [email protected]')"data-request-success="alert('Your message has been sent.')"class="bpsite-form floating-labels">

и это начнет работать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]