Laravel - 发送邮件后无法重定向
Laravel - Can't redirect after sending mail
发送邮件后(我的代码会这样做),我想将用户重定向到另一个视图 (main.blade.php) 但没有任何反应。
在我的表单中,我调用了 sendemail 路由,代码如下:
<form method="POST" action="{{ route('sendemail') }}">
在我的 web.php 中,路由定义如下:
Route::get('/', 'PagesController@main')->name('main');
Route::post('/sendemail', "SendEmailController@send")->name('sendemail');
我的SendEmailController.php看起来像:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\SendMail;
use Illuminate\Support\Facades\Redirect;
class SendEmailController extends Controller
{
public function send()
{
$data = request()->validate([
'name' => 'required',
'email' => 'required|email',
'message' => 'required',
'company' => 'required',
'knowledge' => 'required',
'reason' => 'required',
'subject' => 'required'
]);
Mail::to('example@example.eu')->send(new SendMail($data));
return redirect()->to('main');
}
}
已阅读此主题:Redirect to contacts page after submitting form in laravel 4
但对我不起作用。
编辑:
问题不是来自 Laravel,而是来自 AJAX,问题已解决。
to
方法接受路径,而不是路由名称。它适用于
return redirect()->to('/');
要在重定向中使用路由名称,您必须使用
return redirect()->route('login');
Docs.
发送邮件后(我的代码会这样做),我想将用户重定向到另一个视图 (main.blade.php) 但没有任何反应。
在我的表单中,我调用了 sendemail 路由,代码如下:
<form method="POST" action="{{ route('sendemail') }}">
在我的 web.php 中,路由定义如下:
Route::get('/', 'PagesController@main')->name('main');
Route::post('/sendemail', "SendEmailController@send")->name('sendemail');
我的SendEmailController.php看起来像:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\SendMail;
use Illuminate\Support\Facades\Redirect;
class SendEmailController extends Controller
{
public function send()
{
$data = request()->validate([
'name' => 'required',
'email' => 'required|email',
'message' => 'required',
'company' => 'required',
'knowledge' => 'required',
'reason' => 'required',
'subject' => 'required'
]);
Mail::to('example@example.eu')->send(new SendMail($data));
return redirect()->to('main');
}
}
已阅读此主题:Redirect to contacts page after submitting form in laravel 4
但对我不起作用。
编辑:
问题不是来自 Laravel,而是来自 AJAX,问题已解决。
to
方法接受路径,而不是路由名称。它适用于
return redirect()->to('/');
要在重定向中使用路由名称,您必须使用
return redirect()->route('login');
Docs.