Codeigniter 4 Put的路由资源无法正常工作

qncylg1j  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(154)

为什么我需要在codeigniter 4版本4.2.6中put(update)的url前面加上**/1**?
路径. php:

$routes->resource('ApiManageProfile', ['controller' =>'App\Controllers\ApiData\ApiManageProfile']); // get, put, create, delete

ApiManageProfile.php

<?php

namespace App\Controllers\ApiData;
use App\Controllers\BaseController;
use CodeIgniter\RESTful\ResourceController;
use Codeigniter\API\ResponseTrait;

class ApiManageProfile extends ResourceController
{   

    use ResponseTrait;
    function __construct()
    {           
        
    }
    

    // equal to get
    public function index()
    {                   
                                           
    }

    // equal to post
    public function create() {        
                        
             
    }

    // equal to get
    public function show($id = null) {
        
    }

    // equal to put             
    public function update($id = null) {              
        $id = $this->request->getVar('id');
        $birthday = $this->request->getVar('birthday');
        $phonenumber = $this->request->getVar('phonenumber');
        echo "TESTING";                                                                                                      
    }
    

    // equal to delete
    public function delete($id = null) {        
        
    }

}

然后我用 Postman 的电话把/1****联系起来:

https://testing.id/index.php/ApiManageProfile/1?id=71&phonenumber=1122211&birthday=2023-01-20

代码运行正确。

但如果我用 Postman 来打电话放而不放/1
https://testing.id/index.php/ApiManageProfile?id=71&phonenumber=1122211&birthday=2023-01-20
然后我得到这个错误:

"title": "CodeIgniter\\Exceptions\\PageNotFoundException",
    "type": "CodeIgniter\\Exceptions\\PageNotFoundException",
    "code": 404,
    "message": "Can't find a route for 'put: ApiManageProfile'.",

对于先前版本的codeigniter 4版本4.1.2,它可以正常工作

我无法将所有Rest API更改为在put的url前面使用/1,因为我的应用程序已经启动。如果我更改react native中的代码,则需要一段时间来更新应用程序。而且人们无法更新数据。
Codeigniter 4似乎在最新的更新版本4.2.6中改变了一些东西。导致我的路线在应用程序中中断。
我真的需要帮助。我能做什么?

gopyfrb3

gopyfrb31#

$routes->resource('ApiManageProfile', ['controller' =>'\App\Controllers\ApiData\ApiManageProfile']); // get, put, create, delete

PUT操作生成RESTFUL路由,包括以下内容。

$routes->put('ApiManageProfile/(:segment)', '\App\Controllers\ApiData\ApiManageProfile::update/$1');

这一段不是可选的。
如果要将段实现为可选段,请将其从生成的布线中排除,并以这种方式明确声明它。

$routes->resource(
    'ApiManageProfile', 
    ['controller' =>'\App\Controllers\ApiData\ApiManageProfile', 'except' => 'update']
); // get, create, delete

$routes->put(
    'ApiManageProfile',
    '\App\Controllers\ApiData\ApiManageProfile::update'
);

相关问题