У меня есть класс под названием CustomerController с функцией обновления:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
//use app\model\Customer;
use Illuminate\Support\Facades\View;
use App\model\Customer;
class CustomerController extends Controller
{
public function getAllCustomer()
{
return Customer::get();
}
public function addNewCustomer(Request $request)
{
$validatedData = $request->validate([
'Title' => 'required',
'Name' => 'required|max:255',
'Surname' => 'required|max:255',
'Email' => 'required',
'Phone' => 'required',
'Password' => 'required',
'dateofBirth' => 'required'
]);
return \app\model\Customer::create($request->all());
}
public function update (Request $request , Customer $id)
{
$id->update($request->all());
}
Это маршрут:
Route::put('Customer/{id}' , 'CustomerController@update');
Но в настоящее время я получаю исключение MethodNotAllowedException, я не мог найти никакого решения.
Скриншот:
Большое спасибо!
@Kerbholz Да есть, добавил скриншот






Поэтому при обновлении с использованием метода PUT у вас должен быть скрытый ввод в вашей форме, как показано ниже:
<input type = "hidden" name = "_method" value = "PUT">
форма по-прежнему будет постом
<form action = "/" method = "POST">
Или, как упоминалось @kerbholz (большое спасибо), вы можете использовать помощник
{{ method_field('PUT') }}
Или используйте {{ method_field('PUT') }} в своем Blade. От Помощники Laravel
О, никогда не знал об этом, большое спасибо. Добавил это к моему ответу с вашим кредитом
Спасибо, никаких проблем, кстати, это PUT, а не DELETE;)
Не имеет никакого отношения к тому, что ваш URI является заглавной буквой C для клиента, поскольку ни один из ваших маршрутов не следует этому?
Спасибо, я этого не видел, теперь почтальон сообщает мне, что срок действия страницы истек из-за бездействия (ошибка 419).
Хорошо, пометьте мой вопрос как правильный, если это помогло
Конечно, это помогло мне, но я все еще получаю ошибку 419, у вас есть какие-нибудь советы?
Большое спасибо, мне нужно было поставить исключение в VerifyCsrfToken, теперь я не получаю сообщение об ошибке, но на самом деле он не обновляется, ничего не происходит
Вы знаете, как ввести параметры в почтальон? Я подумал, что мне нужно сделать это в теле, например: {"name": "Hans"}
измените метод маршрута с помощью put и patch
Основная причина, по которой вы получаете эту ошибку, заключается в том, что ваш метод отправки формы отличается от вашего метода маршрута.
Route::match(['put', 'patch'], '/Customer/{id}','CustomerController@update');
Вы пробовали к
php artisan route:list, чтобы узнать, доступен ли этот маршрут? (Кеширование !!!). Илиphp artisan route:cacheдля очистки и кеширования маршрутов ?!