我正在使用PHP 7和CakePHP 4.0开发一个RESTful API。
<?php
namespace App\Controller\Api;
use App\Controller\AppController;
class ProductsController extends AppController
{
public function list(int $categoryId, int $limit = 10, int $page = 1)
{
// here's my code with queries and so on
}
}
我想用GET请求调用我的端点到这个URL:
http://example.com/api/products/list/33/30/1
但我得到这个错误:
Argument 1 passed to App\Controller\Api\ProductsController::list() must be of the type integer, string given, called in /var/www/repo/public/vendor/cakephp/cakephp/src/Controller/Controller.php on line 521
现在,一个非常简单的解决方案是从list
方法的签名中的参数中删除该类型,如下所示(因为,如果我只是从$categoryId
参数中删除该类型,那么其他参数也会出现同样的错误):
public function list($categoryId, $limit = 10, $page = 1)
但是我更愿意在我的方法签名中保留“正确”的类型。我是不是运气不好,或者有没有办法(可能在路由配置中,或者其他地方)阻止Cake(或者PHP本身?)将URL中的参数转换为字符串?
1条答案
按热度按时间zengzsys1#
//这是我的网址,请点击这里返回首页
公共函数配置文件($id){
}