laravel 路由admin/categories不支持GET方法,支持的方法:POST

z9smfwbn  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(130)

我一直有这个错误,不管我做什么。
这是web.php页面。我试图创建一个可以添加产品的表单,当我尝试添加一个项目时,它会显示给我这个。我是laravel的新手,对此没有任何线索

Route::group(['middleware' => 'admin.auth'],function(){

        // Categories Routes
        Route::get('/categories/create',[CategoryController::class,'create'])->name('categories.create');
        Route::post('/categories',[CategoryController::class,'store'])->name('categories.store');

        
    });

字符串
CategoryController.php

class CategoryController extends Controller
{
    public function index() {

    }

    public function create() {
        return view('admin.category.create');
    }

    public function store(Request $request) {
        $validator =Validator::make($request->all(),[
            'name' => 'required',
            'slug' =>'required|unique:categories',
        ]);

        if ($validator->passes()) {
            
            $category = new Category();
            $category->name = $request->name;
            $category->slug = $request->slug;
            $category->status = $request->status;
            $category->save();

            return response()->json([
                'status' => true,
                'message' => 'Category Added Successfully'
            ]);

            $request->session()->flash('success','Category Added Successfully');

        } else {
            return response()->json([
                'status' => false,
                'errors' => $validator->error()
            ]);
        }
    }
}


用于在表格刀片内输入产品名称和slug的按钮

$.ajax({
        url: '{{ route("categories.store") }}',
        type: 'post',
        data: element.serializeArray(),
        dataType: 'json',
        success: function(response){

            if (response["status"] == true) {

                $("#name").removeClasss('is-invalid')
                    .siblings('p')
                    .removeClass('invalid-feedback').html("");
                
                $("#slug").removeClasss('is-invalid')
                .siblings('p')
                .removeClass('invalid-feedback').html("");
                
            } else {
                var errors = response['errors'];
                if (errors['name']) {
                    $("#name").addClasss('is-invalid')
                    .siblings('p')
                    .addClass('invalid-feedback').html(errors['name']);
                } else {
                    $("#name").removeClasss('is-invalid')
                    .siblings('p')
                    .removeClass('invalid-feedback').html("");
                }
                
                if (errors['slug']) {
                    $("#slug").addClasss('is-invalid')
                    .siblings('p')
                    .addClass('invalid-feedback').html(errors['slug']);
                } else {
                    $("#slug").removeClasss('is-invalid')
                    .siblings('p')
                    .removeClass('invalid-feedback').html("");
                }
            }

        }, error: function(jqXHR, exception){
            console.log("Something went wrong");
        }
    })

23c0lvtd

23c0lvtd1#

随着你的方式去,让设置你现在得到的更干净。

Route::group(['middleware' => 'admin.auth'],function(){
    // Categories Routes - index, create, store
    Route::resource('/categories', CategoryController::class)->only(['index', 'create', 'store']);

   /** 
    * A bit of info regarding the web resource
    * Actions Handled By Resource Controller
    * Verb          URI                     Action  Route Name
    * GET           /photos                 index   photos.index
    * GET           /photos/create          create  photos.create
    * POST          /photos                 store   photos.store
    * GET           /photos/{photo}         show    photos.show
    * GET           /photos/{photo}/edit    edit    photos.edit
    * PUT/PATCH     /photos/{photo}         update  photos.update
    * DELETE        /photos/{photo}         destroy photos.destroy
    */
});

字符串
考虑到这一点,在项目内部的终端中,您可以键入:

php artisan route:list


这将显示您拥有的所有可用路由。要调试您的代码是否工作,您可以(在控制器函数中)执行dump('Dump.');dd('Dump and die.)。这样您就可以查看是否命中您创建的端点。
如果您检查页面并转到“网络”选项卡,您可以看到您得到的响应
现在,关于你的apache调用。不建议获取路由并将其解析为JS(参见url: '{{ route("categories.store") }}')。为了解决这个问题,请尝试手动编写从route:list获取的路径。
另一个提示是,aecom有$.post()可用。
希望这能让你走上正确的道路。
更新:我假设你的查询也是在你使用jquery注册onclick的时候运行的。这样:

$("button").click(function(){ YourAjaxCallHere });

相关问题