Laravel 6.x VerizesEmails.php завершается с ошибкой $ request-> route ('hash'), проходит с $ request-> get ('hash') - PullRequest
1 голос
/ 11 октября 2019

В \Illuminate\Foundation\Auth\VerifiesEmails.php строка 39 завершается с $request->route('hash'), но проходит с $request->get('hash'). Я не уверен, является ли это ошибкой, но я не вижу ничего, что я сделал, чтобы как-то сломать эту функцию именно здесь. Я не изменил мой VerificationController.php файл из ядра.

Выше $request->route('id') работает, но переданный ID в этом маршруте не является параметром, а непосредственно в пути, тогда как хеш прикреплен как? hash = myhash.

Для справки, вот мой URL: http://localhost:8000/email/verify/8edd16a5-ad04-4782-b0fe-33f0f482d080?expires=myexpiryhere&hash=myhashhere&signature=mysignaturehere

Может кто-нибудь объяснить мне, как заставить это работать? Очевидно, что изменение файлов вендора не вариант. Я опубликовал это в выпусках Laravel здесь , но мне было предложено предположить, что, возможно, я забыл параметр маршрута. URL генерируется платформой, поэтому я не знаю, какой параметр я мог бы забыть.

1 Ответ

1 голос
/ 11 октября 2019

Это плохо, но спасибо Чин Леунгу за то, что он задал правильный вопрос.

Мои текущие маршруты:

Route::get('email/verify', [VerificationController::class, 'show'])->name('verification.notice');
Route::get('email/verify/{id}', [VerificationController::class, 'verify'])->name('verification.verify');
Route::post('email/resend', [VerificationController::class, 'resend'])->name('verification.resend');

Я сам задаю их, потому что не использую значение по умолчаниюПространства имен в моих файлах маршрутов, я импортирую контроллеры напрямую, чтобы упростить рефакторинг. Похоже, позже к маршруту verification.verify был добавлен новый параметр, поэтому теперь он должен быть email/verify/{id}/{hash}

...