Witam.
Mam pewien problem z przekierowaniem w raz z komunikatem błędu. Nie mogę dojść dlaczego komunikat błędu jest usuwany podczas tej operacji i finalnie w widoku nie ma żadnego komunikatu.
Oto mój kod.
Route:
Route::get('/verify-email/{id}/{hash}', [VerifyEmailController::class, '__invoke'])
->middleware(['signed', 'throttle:6,1', 'web'])
->name('verification.verify');
Oraz Controller:
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\EmailVerificationRequest;
use App\Models\User;
use App\Providers\RouteServiceProvider;
class VerifyEmailController extends Controller
{
public function __invoke(EmailVerificationRequest $request)
{
$user = User::findOrFail($request->route('id'));
if ($user->hasVerifiedEmail()) {
return redirect()->intended(route('login'))->withErrors(['verified' => "Your email address is already confirmed"]);
}
$user->markEmailAsVerified();
return redirect()->intended(RouteServiceProvider::HOME.'?verified=1');
}
}
Z góry dziękuję za pomoc.
Edit.
Mam winowajcę.
Powodem takiego zachowania było to że ten route nie był zdefiniowany w pliku "routes/web.php" tylko w osobnym.
Natomiast w "RouteServiceProvider" w metodzie "boot" mamy zdefiniowane takie polecenie.
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
Które dla każdego route w tym pliku dodaje z automatu middleware "web". A to odpowiada za przechowywanie MessageBag w sesji o ile mi wiadomo.
Natomiast zastanawia mnie dlaczego jeśli do route dodałem middleware "web" to nie zadziałało przekazywanie MessageBag?
Czy ktoś może mi wyjaśnić różnice pomiędzy ustawieniem middleware w provider a dodaniem go bezpośrednio do routa?
Dziękuję