此路由不支持POST方法,支持的方法:获取,头部,+ Laravel

stszievb  于 2022-12-05  发布在  其他
关注(0)|答案(3)|浏览(181)

我正在尝试更新。

出现错误

此路由不支持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.
请帮帮忙

ylamdve6

ylamdve61#

您可能已经缓存了路由,可以尝试在终端中运行以下命令:

php artisan route:clear
php artisan route:cache

你应该去掉你添加的代码,使它成为一个put请求,除非这是你想要的。如果你想让它成为一个PUT路由,你需要用途:

Route::put

否则,如果你还是不能找到它,检查你的路由文件,并检查任何其他匹配“editcountries”的路由。有时候,你把路由的顺序可能会导致与其他路由的冲突,比如资源路由。然而,我会说,如果你摆脱了刀片文件中的PUT代码,并运行我提供的路由缓存命令,你应该让它与后路由一起工作。

vsdwdz23

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)

App\Http\Controllers\backend\admineditcountryController
# should be
App\Http\Controllers\Backend\AdminEditCountryController
# even better (Namespaced) 
App\Http\Controllers\Backend\Admin\CountryController

2.使用导入引用控制器

这是一个有点干净(PHP 7+)+尝试利用Route::resource + Laravel动作动词作为控制器函数名称docs

use App\Http\Controllers\Backend\AdminEditCountryController;

/* Simplified - Best practice: use dashes as URL delimiters '-' */
Route::post('edit-countries', AdminEditCountryController::class . '@editcountries');

/* PRO VERSION */
Route::group('admin')->prefix('admin')->name('admin.')->group( function () {
  // AdminEditCountryController@update()
  Route::resource('country', Admin\CountryController::class)->only(['update']); 
});

3.额外学分

尝试生成您的控制器(受益于PSR-2兼容的名称空间和文件夹布局):

php artisan make:controller Admin\CountryController --resource
6jjcrrmo

6jjcrrmo3#

我解决了。

路线

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.');

    $data = country::where('id', '=',  $id)->first();
    return view('backend.admineditcountry',['clist'=>$data]);

    }

"刀锋"

<form action="/editcountries" method="POST" enctype="multipart/form-data">

                    @csrf

                  <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>

相关问题