я только начал работать над laravel. Я установил laravel Лезвие стека пакета Breeze для аутентификации. После обновления файла .env и переноса таблиц в базу данных. Когда я пытаюсь запустить приложение, он говорит, что метод get не поддерживается не только для регистрации, но и для входа в систему. Я пробовал такие методы, как php. маршрут artisan: ясно, конфигурация php artisan: кэш, оптимизация php artisan: ясно. Я даже изменил метод post в форме и функцию сохранения регистра, чтобы получить, но ошибка остается, метод get не поддерживается.
маршрут: auth.php
<?php
use App\Http\Controllers\Auth\AuthenticatedSessionController;
use App\Http\Controllers\Auth\ConfirmablePasswordController;
use App\Http\Controllers\Auth\EmailVerificationNotificationController;
use App\Http\Controllers\Auth\EmailVerificationPromptController;
use App\Http\Controllers\Auth\NewPasswordController;
use App\Http\Controllers\Auth\PasswordController;
use App\Http\Controllers\Auth\PasswordResetLinkController;
use App\Http\Controllers\Auth\RegisteredUserController;
use App\Http\Controllers\Auth\VerifyEmailController;
use Illuminate\Support\Facades\Route;
Route::middleware('guest')->group(function () {
Route::get('register', [RegisteredUserController::class, 'create'])
->name('register');
Route::post('register', [RegisteredUserController::class, 'store']);
Route::get('login', [AuthenticatedSessionController::class, 'create'])
->name('login');
Route::post('login', [AuthenticatedSessionController::class, 'store']);
Route::get('forgot-password', [PasswordResetLinkController::class, 'create'])
->name('password.request');
Route::post('forgot-password', [PasswordResetLinkController::class, 'store'])
->name('password.email');
Route::get('reset-password/{token}', [NewPasswordController::class, 'create'])
->name('password.reset');
Route::post('reset-password', [NewPasswordController::class, 'store'])
->name('password.store');
});
Route::middleware('auth')->group(function () {
Route::get('verify-email', EmailVerificationPromptController::class)
->name('verification.notice');
Route::get('verify-email/{id}/{hash}', VerifyEmailController::class)
->middleware(['signed', 'throttle:6,1'])
->name('verification.verify');
Route::post('email/verification-notification', [EmailVerificationNotificationController::class, 'store'])
->middleware('throttle:6,1')
->name('verification.send');
Route::get('confirm-password', [ConfirmablePasswordController::class, 'show'])
->name('password.confirm');
Route::post('confirm-password', [ConfirmablePasswordController::class, 'store']);
Route::put('password', [PasswordController::class, 'update'])->name('password.update');
Route::post('logout', [AuthenticatedSessionController::class, 'destroy'])
->name('logout');
});
регистр.blade.php
<x-guest-layout>
<form method = "POST" action = "{{ route('register') }}">
@csrf
<!-- Name -->
<div>
<x-input-label for = "name" :value = "__('Name')" />
<x-text-input id = "name" class = "block mt-1 w-full" type = "text" name = "name" :value = "old('name')" required autofocus autocomplete = "name" />
<x-input-error :messages = "$errors->get('name')" class = "mt-2" />
</div>
<!-- Email Address -->
<div class = "mt-4">
<x-input-label for = "email" :value = "__('Email')" />
<x-text-input id = "email" class = "block mt-1 w-full" type = "email" name = "email" :value = "old('email')" required autocomplete = "username" />
<x-input-error :messages = "$errors->get('email')" class = "mt-2" />
</div>
<!-- Password -->
<div class = "mt-4">
<x-input-label for = "password" :value = "__('Password')" />
<x-text-input id = "password" class = "block mt-1 w-full"
type = "password"
name = "password"
required autocomplete = "new-password" />
<x-input-error :messages = "$errors->get('password')" class = "mt-2" />
</div>
<!-- Confirm Password -->
<div class = "mt-4">
<x-input-label for = "password_confirmation" :value = "__('Confirm Password')" />
<x-text-input id = "password_confirmation" class = "block mt-1 w-full"
type = "password"
name = "password_confirmation" required autocomplete = "new-password" />
<x-input-error :messages = "$errors->get('password_confirmation')" class = "mt-2" />
</div>
<div class = "flex items-center justify-end mt-4">
<a class = "underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800" href = "{{ route('login') }}">
{{ __('Already registered?') }}
</a>
<x-primary-button class = "ms-4">
{{ __('Register') }}
</x-primary-button>
</div>
</form>
</x-guest-layout>
Зарегистрированный контроллер
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules;
use Illuminate\View\View;
class RegisteredUserController extends Controller
{
/**
* Display the registration view.
*/
public function create(): View
{
return view('auth.register');
}
/**
* Handle an incoming registration request.
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request): RedirectResponse
{
$request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class],
'password' => ['required', 'confirmed', Rules\Password::defaults()],
]);
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
event(new Registered($user));
Auth::login($user);
return redirect(route('dashboard', absolute: false));
}
}
Ошибка в браузере
Symfony
\
Component
\
HttpKernel
\
Exception
\
MethodNotAllowedHttpException
PHP 8.2.12
11.3.1
The GET method is not supported for route register. Supported methods: POST.
URL: http://localhost:8000/register
🤔 А знаете ли вы, что...
Laravel позволяет создавать и управлять заданиями, выполняющимися по расписанию.
Убедитесь, что маршруты, определенные в вашем файле, загружаются платформой, запустив php artisan route:list
. Вы должны увидеть что-то вроде:
...
GET|HEAD register ... register › Auth\RegisteredUserController@create
POST register ............... Auth\RegisteredUserController@store
...
Это будет соответствовать маршрутам, зарегистрированным в вашем файле аутентификации:
Route::get('register', [RegisteredUserController::class, 'create'])
->name('register');
Route::post('register', [RegisteredUserController::class, 'store']);
По умолчанию маршруты определяются внутри routes/web.php
. Из этого файла вы можете загрузить другие файлы маршрутов, например. include __DIR__.'/auth.php';
(при условии, что ваш файл аутентификации находится в том же месте, что и web.php). Кстати, веб-файл загружается при загрузке платформы через файл /bootstrap/app.php
.