我正在尝试更新。
出现错误
此路由不支持POST方法。支持的方法:得到,头。
下面是代码
路线中
Route::post('editcountries','App\Http\Controllers\backend\admineditcountryController@editcountries');
在控制器中
function editcountries(Request $request)
{
$country_en = $request->input('country_en');
$country_ar = $request->input('country_ar');
$id = $request->input('idd');
$cstatus = 1;
if (isset($request->status))
$cstatus = 1;
else
$cstatus = 0;
$isUpdateSuccess = country::where('id',$id)->update(['country_en'=> $country_en,
'country_ar'=> $country_ar,
'status' => $cstatus
]);
$this->clearToastr();
session()->put('updated','Information updated Successfully.');
return view('backend.adminaddcountry');
}
在刀片中
<form action="editcountries" method="POST" enctype="multipart/form-data">
@csrf
{{-- @method('PUT') --}}
{{-- <input type="hidden" name="_method" value="PUT">" --}}
<div class="input-style-1">
<label>Country Name in English </label>
<input type="text" name="country_en" placeholder="Country Name in English"
value='{{ $clist->country_en }}' required/>
</div>
<div class="input-style-1">
<label>Country Name in Arabic</label>
<input type="text" dir="rtl" name="country_ar" placeholder="اسم الدولة بالعربية" value='{{ $clist->country_ar }}' />
</div>
<!-- end input -->
<div class="form-check form-switch toggle-switch">
<input class="form-check-input" name="status" type="checkbox" id="toggleSwitch2" @if($clist->status==1)
checked=""
@else
@endif>
<label class="form-check-label" for="toggleSwitch2">Enable or disable the country.</label>
</div>
<input type="hidden" id="idd" name="idd" value="{{ $clist->id }}" />
<br>
<button class="main-btn primary-btn btn-hover text-center">Update</button>
</form>
我试过用
@method('PUT')
但是当错误The PUT method is not supported for this route. Supported methods: GET, HEAD.
请帮帮忙
我试着
我试过用
@method('PUT')
但是当错误The PUT method is not supported for this route. Supported methods: GET, HEAD.
请帮帮忙
3条答案
按热度按时间ylamdve61#
您可能已经缓存了路由,可以尝试在终端中运行以下命令:
你应该去掉你添加的代码,使它成为一个put请求,除非这是你想要的。如果你想让它成为一个PUT路由,你需要用途:
否则,如果你还是不能找到它,检查你的路由文件,并检查任何其他匹配“editcountries”的路由。有时候,你把路由的顺序可能会导致与其他路由的冲突,比如资源路由。然而,我会说,如果你摆脱了刀片文件中的PUT代码,并运行我提供的路由缓存命令,你应该让它与后路由一起工作。
vsdwdz232#
如何调试:
1.运行:
php artisan route::list --path admineditcountryController
1.如果在输出中看不到控制器,请运行
php artisan route:clear
我不推荐运行
route:cache
,因为您在更改/添加/删除路由时必须连续运行route:clear
-在您的CI中将其设置为仅在PROD中运行。实际上-您应该在生产中运行php artisan optimize
,它将为您提供一系列出色的性能Laravel魔术(further reading)其他改进(PR备注)
1.遵循PSR-2文件/类/名称空间命名
另外,请确保您的文件夹和名称空间遵循PSR-2(CamelCase)
2.使用导入引用控制器
这是一个有点干净(PHP 7+)+尝试利用
Route::resource
+ Laravel动作动词作为控制器函数名称docs3.额外学分
尝试生成您的控制器(受益于PSR-2兼容的名称空间和文件夹布局):
6jjcrrmo3#
我解决了。
路线
控制器
"刀锋"