我花了6个小时试图弄明白这一点,我很可能是个哑巴。
我正在尝试创建一个POST端点,该端点具有基于另一个参数的值所需的参数。
register_rest_route(
\'thing/v1\',
\'/thingy/(?P<foo>\\d+)\',
array(
\'methods\' => \'POST\',
\'callback\' => array( $this, \'create_something\' ),
\'args\' => array(
\'foo\' => array(
\'required\' => true,
\'type\' => \'integer\',
),
\'bar\' => array(
\'required\' => true, // make this false if foo = 3
\'type\' => \'integer\',
),
),
)
);
我尝试了一些方法,包括:
将回调设置为所需值。(它没有进入函数,所以我想它不喜欢回调)默认情况下,将validate\\u callback与required一起使用为false,问题是如果参数没有提交到请求,它就不会进入函数默认情况下,使用validate\\u callback with required as true,问题是该参数在不需要时仍然存在(在我的情况下,这将导致进一步的问题)我在内核中寻找一个过滤器或挂钩,它可以让我动态地更改所需的值(肯定有点黑客),但我找不到任何东西。
我只是想问一下,万一我遗漏了一些明显的东西。
谢谢
SO网友:Ján Janočko
这就是我如何使用validate回调解决类似问题的方法-这是代码的一部分,其中bar
参数定义为:
\'bar\' => array(
\'default\' => FALSE,
\'validate_callback\' => function($param, $request, $key) {
if ($request[\'foo\'] == 3)
return ($param !== FALSE);
return FALSE;
}
),
The
default
参数导致调用validate回调,即使请求参数
bar
未提供。然后,在“仅当满足条件时才验证回调”中,检查参数是否具有非默认值。