-
Notifications
You must be signed in to change notification settings - Fork 0
请求参数
在此之前,您应该需要注意配置文件中的 route.params.to_get.model
, 该项允许填写为任意内容, 但有意义的值仅有 value
、list
、value-list
和 list-value
请注意,请求参数中有四个特殊值,分别是_GET
、_POST
、_COOKIE
和_INPUT
,它们用于存放对应的请求参数,如果您尝试获取它们,将会获得一个包含该类型全部参数的数组(_INPUT
是特例,它的值是一个字符串),请不要随意通过程序设置这些值
如果您需要获取一个参数,您应该使用 \AdminService\Request::param(int|string $params,mixed $default=null): mixed
方法访问请求参数, 您需要传入一个 int
或 string
的索引值
如果您的控制器继承了 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-list
和 list-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
且数据类型为 int
或 string
, 此时程序就能快速访问到请求变量了
// 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)
设置请求参数
当您传入的 $params
为 array
类型时, 您无需在传递额外的参数, 它会将您的传递的数组与原数组合并, 如果键冲突将会保留传递的数组的键值
use AdminService\Request;
Request::params(array(
'key1'=>0,
'key2'=>1
))
有时候您可能并不需要修改过多的值, 这时您可以通过传递 int
或 string
类型的 $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)