【问题标题】:Page accessible once a message is sent发送消息后可访问的页面
【发布时间】:2020-07-11 04:55:00
【问题描述】:

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

这是来自 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>

【问题讨论】:

  • 在执行redirect() 之前,您可以存储一个会话变量,指示表单已填写。然后在收到的页面上,您可以对这个变量执行 if(!isset(...)) 并重定向回来。

标签: php laravel controller routes laravel-mail


【解决方案1】:

为此,您可以使用 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
}

【讨论】:

    【解决方案2】:

    我将以下代码添加到 contact.recieved 页面,它工作正常。

    @if (session()->has('message'))
    
    <body style="background: lightgrey;">
    <div class="centered text-success ">
        <h1>Message Recieved! :)</h1>
        <hr>
        <p>{{ session()->get('message')}} </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>
    @else
    <body class="notFound">
        <div class="flex-center position-ref full-height">
            <div class="code not-found text-capitalize">404</div>
    
            <div class="message not-found text-capitalize" style="padding: 10px;">Not `Found</div>`
        </div>
    </body>
    @endif
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2015-09-12
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      相关资源
      最近更新 更多