#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) без входа в систему, поэтому я вошел в систему.