首页 > 解决方案 > 发送消息后可访问的页面

问题描述

我有一个联系表格,我创建了一个页面来显示消息发送的时间,但我希望只有在发送消息时才能访问此页面。可能吗?

这是来自 ContactFormController 的行

public function store()
{
    $data = request()->validate([
        'name' => 'required',
        'email' => 'required|email',
        'message' => 'required',

    ]);

    Mail::to('test@test.com')->send(new ContactFormMail($data));

    return redirect('contact.recieved');
}

因为当我转到它打开的contact.recieved 页面时,我希望它仅在发送消息时打开。

以下是 web.php 文件中的行

Route::get('contact', 'ContactFormController@create')->name('contact.create');
Route::post('contact', 'ContactFormController@store')->name('contact.store');
Route::view('message-recieved', 'contact.recieved');

这是contact.recieved页面

<body style="background: lightgrey;">
<div class="centered text-success ">
    <h1>Message Recieved! :)</h1>
    <hr>
    <p>Thank you for your message. I'll be in touch.</p>
</div>
<div class="p-4">
    <a class="a-links p-2 border border-success rounded-sm" href="{{url('/')}}">
        <i class="fa fa-angle-left text-success"> <span> Go Back</span></i>
    </a>
</div>
</body>

标签: phplaravelcontrollerrouteslaravel-mail

解决方案


为此,您可以使用try catch块,如下所示:

public function store()
{
    $data = request()->validate([
        'name' => 'required',
        'email' => 'required|email',
        'message' => 'required',
    ]);

    try { 

      Mail::to('test@test.com')->send(new ContactFormMail($data));

    } catch (\Swift_TransportException $e){
        return "Cant send email"; // Return this, if not send
    }
    return redirect('contact.recieved'); // Return this, if send successfully
}

推荐阅读