Laravel Livewire Метод POST не поддерживается для этого маршрута

#laravel #laravel-livewire #livewires

#laravel #laravel-livewire #livewires

Вопрос:

Как только я вставил этот заголовок, система показала мне все похожие вопросы, и ни один из них мне не помог. Я получаю эту ошибку «Метод POST не поддерживается для этого маршрута». что бы я ни пытался. Хуже того, я уже создал другой компонент с идентичной логикой, и он работает хорошо.

вот маршруты: (teeoffform работает, bulletin — нет)

 Route::get('/bulletin', function () {
    return view('bulletin');
   });
Route::get('/teeoffform', function () {
    return view('teeoffform');
});
 

Вот теги формы: оба одинаковые, один работает, другой нет

 <form wire:submit.prevent="submit" method="POST">
 

это мой компонент из того, который не работает (бюллетень)
единственное отличие от другого, который работает, заключается в том, что нет метода рендеринга, поэтому я попытался удалить его и посмотреть, была ли это проблема, но безуспешно… Я подумал, что, поскольку мой маршрут уже вызывает представление, возможно, конфликт существует… но это не имеет значения, я все равно получаю ошибку, и у меня нет идей.

 <?php

namespace AppHttpLivewire;

use IlluminateSupportFacadesAuth;
use LivewireComponent;
use AppModelsBulletins;
use AppModelsUser;


class Bulletin extends Component
{
            public $title;
            public $message;
            public $messagesending;
            public $user_email;
            public $userTable_email;
            public $expires;
            public $success_message;
            protected $rules = [
                'title' => 'required',
                'message' => 'required',
                'user_email' => 'required',
                'expires' => 'required',
            ];

    public function render()
    {
        return view('livewire.bulletin', ['email_data' => User::orderBy('email','asc')->get()]);
    }

    public function submit()
    {
        $this->validate();

        $sendMessage = new Bulletins;
        $sendMessage->title = $this->title;
        $sendMessage->message = $this->messagesending;
        $sendMessage->user_email = $this->user_email;
        $sendMessage->expires = $this->expires;
        $sendMessage->save();

        $this->success_message = 'Message Sent Successfully';
    }

}
 

Я действительно не понимаю… Я уже 4 часа смотрел, почему это происходит.

Комментарии:

1. Посмотрите на вкладку network в devtools и посмотрите, какой запрос выдает ошибку и какой ответ.

2. Как выглядит остальная часть HTML-кода? Зачем вы вообще используете форму?

3. У меня была такая же проблема, для меня мне пришлось добавить wire:submit.prevent=»createStuff», чтобы предотвратить поведение по умолчанию, надеюсь, это поможет

Ответ №1:

Я также столкнулся с этой проблемой и обнаружил, что я не включал стили и скрипты Livewire в свои блейд-файлы макетов приложений.

@livewireStyles @livewireScripts

Ответ №2:

Я нашел разницу, но не в логике кода, а в том, откуда я его запускал. Если бы я тестировал из (localhost / bulletin) Я получал эту ошибку. если я включил компонент в панель мониторинга (localhost / home) и запустил его оттуда, тогда все заработало…

почему это так? Я не могу перейти к (localhost / bulletin) без входа в систему, поэтому я вошел в систему.