【问题标题】:Octobercms successful mail send returns empty alertOctobercms 邮件发送成功返回空提示
【发布时间】:2015-02-14 18:29:59
【问题描述】:

我是 Laravel 和 OctoberCMS 的新手。

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

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

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

下面是表格的部分内容:

<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');
   });
}

感谢您的帮助。

【问题讨论】:

    标签: laravel octobercms


    【解决方案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>
    

    所以基本上你只需要添加一个 data-request-success 来让它工作。享受吧!

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-29
        • 1970-01-01
        • 1970-01-01
        • 2019-07-03
        • 1970-01-01
        • 1970-01-01
        • 2015-05-18
        • 2021-10-24
        相关资源
        最近更新 更多