0

我是 Laravel 和 OctoberCMS 的新手。

我已经成功设置了一个信息请求表,提交时会通过 Mailgun 向我发送一封电子邮件。提交由 AJAX 处理程序处理。

我遇到的问题是该过程会在表单页面上打开一个带有空数组的警报框。

这是页面: http: //imageweaversmarketing.com/ 点击右上角的“联系”以移动到表单。

这是表格的部分内容:

<div class="row">
<div class="col-lg-12">
    <form data-request="onInfoRequest" name="sentMessage" id="contactForm" novalidate="">
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    <input type="text" class="form-control" placeholder="Your Name *" id="name" required="" data-validation-required-message="Please enter your name.">
                    <p class="help-block text-danger"></p>
                </div>
                <div class="form-group">
                    <input type="email" class="form-control" placeholder="Your Email *" id="email" required="" data-validation-required-message="Please enter your email address.">
                    <p class="help-block text-danger"></p>
                </div>
                <div class="form-group">
                    <input type="tel" class="form-control" placeholder="Your Phone *" id="phone" required="" data-validation-required-message="Please enter your phone number.">
                    <p class="help-block text-danger"></p>
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    <textarea class="form-control" placeholder="Your Message *" id="message" required="" data-validation-required-message="Please enter a message."></textarea>
                    <p class="help-block text-danger"></p>
                </div>
            </div>
            <div class="clearfix"></div>
            <div class="col-lg-12 text-center">
                <div id="success"></div>
                <button type="submit" class="btn btn-xl">
                    Send Message
                </button>

            </div>
        </div>
    </form>
</div>

这是 PHP AJAX:

use Illuminate\Support\Facades\Mail;
   public function onInfoRequest() {
   $data = ['name' => 'test from function'];
   Mail::send('mail.inforequest', $data, function ($message) {
   $message->to('fake@hidden.com', 'Roger Creasy');
   });
}

我很感激任何帮助。

4

2 回答 2

1

我看到您没有使用数据请求成功处理程序。当邮件成功时显示输出是必要的。这是我的做法

function onSend()
{
    // Collect input
    $name = post('name');
    $email = post('email');

    // Form Validation
    $validator = Validator::make(
        [
            'name' => $name,
            'email' => $email
        ],
        [
            'name' => 'required',
            'email' => 'required|email'
        ]
    );

    if ($validator->fails())
    {
        $messages = $validator->messages();
        throw new ApplicationException($messages->first());
    }

    // All is well -- Submit form
    $to = System\Models\MailSettings::get('sender_email');
    $params = compact('name','email');
    Mail::sendTo($to, 'temp.website::mail.newrequest', $params);
    return true;
}

在我使用的表格方面

<form class="form-horizontal" data-request="onSend" data-request-success="alert('We have recieved your email.. we\'ll get back to you shortly')">

        <div class="form-group">
          <label class="col-md-4 control-label" for="name">Name</label>  
          <div class="col-md-5">
          <input id="name" name="name" type="text" placeholder="Name" class="form-control input-md" required="">
          </div>
        </div>

        <div class="form-group">
          <label class="col-md-4 control-label" for="email">Email</label>  
          <div class="col-md-5">
          <input id="email" name="email" type="text" placeholder="Email ID" class="form-control input-md" required="">
          </div>
        </div>
</form>

所以基本上你只需要添加一个数据请求成功来让它工作。享受!

于 2015-03-22T16:59:17.927 回答
0

我必须完成这个。所以,我在 10 月内放弃了解决方案。我将我所做的作为一种解决方法发布,以防它对其他人有帮助。

我所做的是创建一个路由资源,并将其定向到控制器来处理表单。基本上我去了 Laravel 基础结构并通过它的 MVC 处理表单。

于 2015-02-17T15:03:04.717 回答