Я пытаюсь добавить функцию состояния в систему заявок, встроенную в Laravel, которая будет поддерживать, если заявка открыта, закрыта, удерживается и т. Д.
У меня создана таблица состояний, и яможет ссылаться на эту таблицу в моем представлении.
Представление имеет раскрывающееся меню со всеми возможными состояниями, и я хотел бы обновить состояние заявки, когда в раскрывающемся меню выбрано новое состояние.
В настоящее время у меня запущена функция onchange JavaScript, но у меня проблема с отправкой запроса POST из функции JavaScript. При перенаправлении на маршрут POST я получаю сообщение об ошибке: MethodNotAllowedHttpException .
Маршрут публикации работает правильно, если я назначаю каждому состоянию свою собственную кнопку формы.
В последний разЯ получил эту ошибку, потому что я забыл передать токен CSRF в форму. Однако я понятия не имею, как это сделать с помощью функции JavaScript.
Я уверен, что есть способ выполнить то, что я пытаюсь сделать, но я не уверен, как это сделать.
Спасибо за любую помощь!
Это мой вид
<form name="stateForm" action="{{ url($claim->path() . '/state') }}">
<select id="stateList" onchange="stateChange(this.form)">
@foreach($states as $state)
<option id="{{ url($claim->path() . '/state/' . $state->id) }}" value="{{ $state->id }}">{{ $state->name }}</option>
@endforeach
</select>
</form>
JavaScript вызван при изменении
function stateChange(stateForm, URL)
{
var selIndex = stateForm.stateList.selectedIndex;
var URL = stateForm.stateList.options[selIndex].id;
window.location.href = URL;
}
Маршрут Ларавела
Route::post('/claims/{claim}/state/{stateID}', 'ClaimController@updateState');
Рабочий код с использованием форм и кнопок
<div class="btn-group">
@foreach( $states as $state)
<form method="post" action="{{ url($claim->path() . '/state/'. $state->id) }}">
{{ csrf_field() }}
<button>
{{ $state->name }}
</button>
</form>
@endforeach
</div>