Ошибка метода GET не поддерживается в пакете Laravel Breeze

я только начал работать над 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 позволяет создавать и управлять заданиями, выполняющимися по расписанию.


72
1

Ответ:

Решено

Убедитесь, что маршруты, определенные в вашем файле, загружаются платформой, запустив 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.