OctoberCMS表单文件上传|为foreach()提供的参数无效

问题描述 投票:0回答:1

我是OctoberCMS和Laravel的新手。除了添加多个文件附件之外,我一直在设置一个完美无缺的联系表单。我在网上搜索过,无法找到解决方案,因为我的表单不会发送。

有问题的错误是“第26行为foreach()提供的无效参数”

第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>

在此先感谢能帮助我的人!

亲切的问候,杰克

php laravel laravel-5 octobercms october-form-controller
1个回答
1
投票

您正在使用OctoberCMS的ajax框架,并且您希望使用此表单上载文件附件,然后您需要再添加一个属性data-request-files到表单元素。

您的表单元素将如下所示:

<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">

它会开始工作。

© www.soinside.com 2019 - 2024. All rights reserved.