Skip to content

请求参数

boringmj edited this page Mar 5, 2024 · 21 revisions

获取请求参数

在此之前,您应该需要注意配置文件中的 route.params.to_get.model, 该项允许填写为任意内容, 但有意义的值仅有 valuelistvalue-listlist-value

请注意,请求参数中有四个特殊值,分别是_GET_POST_COOKIE_INPUT,它们用于存放对应的请求参数,如果您尝试获取它们,将会获得一个包含该类型全部参数的数组(_INPUT是特例,它的值是一个字符串),请不要随意通过程序设置这些值

如果您需要获取一个参数,您应该使用 \AdminService\Request::param(int|string $params,mixed $default=null): mixed 方法访问请求参数, 您需要传入一个 intstring 的索引值
如果您的控制器继承了 base\Controller 基类, 您可以使用 self::param(int|string $param,mixed $default=null): mixed 访问请求参数
当您访问的参数不存在或为null时, 返回默认值

无论您使用上述两种方法的何种方法, 请求参数都是严格按照 CGP 获取的, 如果您想要获取特定的请求参数, 需要继续向后学习
value 表示仅将路由参数解析为值, 从下标 0 开始依次往后存储入 get 参数中, 下面是一个简单的例子

// Route: /AppName/Controller/Method/param1
use AdminService\Request;

// value
// 获取第一个参数
Request::param(0)

list 表示仅将路由参数解析为键值对, 如果剩余键无法分配到值, 则默认为空
除此之外, 如果键不符合 route.params.rule.get 的规则, 则不会解析该键值对到请求参数中
下面是一个简单的例子

// Route: /AppName/Controller/Method/paramName/ParamValue
use AdminService\Request;

// list
// 获取 paramName
Request::param('paramName')

value-listlist-value 表示按上面两种方法解析一次, 不同点在于 value-list 在参数冲突时侧重于保留 list, list-value 在参数冲突时侧重于保留 value, 下面是一个很好的例子

// Route: /AppName/Controller/Method/0/value
use AdminService\Request;

// value-list
echo Request::param(0); // value

// list-value
echo Request::param(0); // 0

当然,如果您还想更灵活的获取到请求参数,你可以通过 \AdminService\Request::params(int|string|array $params,mixed $value=null) 方法访问, 需要注意的是, 您只需传入 $params 且数据类型为 intstring, 此时程序就能快速访问到请求变量了

// Route: /AppName/Controller/Method/key1/value1
use AdminService\Request;

//list-value
Request::params('key1')
Request::param('key1') // 与上面几乎是相同的结果

设置请求参数

请求参数除了在程序初始化时被设置外, 还允许在程序过程中被设置
您可以通过 \AdminService\Request::params(int|string|array $params,mixed $value=null) 设置请求参数
当您传入的 $paramsarray 类型时, 您无需在传递额外的参数, 它会将您的传递的数组与原数组合并, 如果键冲突将会保留传递的数组的键值

use AdminService\Request;
Request::params(array(
    'key1'=>0,
    'key2'=>1
))

有时候您可能并不需要修改过多的值, 这时您可以通过传递 intstring 类型的 $params, 并且传递一个不为空的 $value

use AdminService\Request;
Request::params('key1',0)

您还可以通过 set(int|string|array $params, mixed $value=null) 方法来设置, 上面的方法设置单个值存在一个弊端, 如果 $params 不为数组且 $value 为空, 则程序会认为您是在获取这个值, 而非设置, 本方法完美解决该问题

use AdminService\Request;
// array
Request::set(array(
    'key1'=>0,
    'key2'=>1
))

// no array
Request::set('key1',0)




<第一个程序 | 返回类型>

Clone this wiki locally