REST API: Allow parameters defined as `array` to be sent as CSVs.
This allows parameters that are often handled as CSVs to be properly parsed. Fixes #38586. git-svn-id: https://develop.svn.wordpress.org/trunk@39048 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
4f9bc7535d
commit
c9618c09ad
|
@ -996,7 +996,7 @@ function rest_get_avatar_sizes() {
|
|||
function rest_validate_value_from_schema( $value, $args, $param = '' ) {
|
||||
if ( 'array' === $args['type'] ) {
|
||||
if ( ! is_array( $value ) ) {
|
||||
return new WP_Error( 'rest_invalid_param', sprintf( /* translators: 1: parameter, 2: type name */ __( '%1$s is not of type %2$s.' ), $param, 'array' ) );
|
||||
$value = preg_split( '/[\s,]+/', $value );
|
||||
}
|
||||
foreach ( $value as $index => $v ) {
|
||||
$is_valid = rest_validate_value_from_schema( $v, $args['items'], $param . '[' . $index . ']' );
|
||||
|
|
|
@ -103,4 +103,16 @@ class WP_Test_REST_Schema_Validation extends WP_UnitTestCase {
|
|||
$this->assertTrue( rest_validate_value_from_schema( array( 1 ), $schema ) );
|
||||
$this->assertWPError( rest_validate_value_from_schema( array( true ), $schema ) );
|
||||
}
|
||||
|
||||
public function test_type_array_as_csv() {
|
||||
$schema = array(
|
||||
'type' => 'array',
|
||||
'items' => array(
|
||||
'type' => 'number',
|
||||
),
|
||||
);
|
||||
$this->assertTrue( rest_validate_value_from_schema( '1', $schema ) );
|
||||
$this->assertTrue( rest_validate_value_from_schema( '1,2,3', $schema ) );
|
||||
$this->assertWPError( rest_validate_value_from_schema( 'lol', $schema ) );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue