Automattic\WooCommerce\Internal\Admin\Settings
SettingsUISchema::assert_field_save
Assert field save metadata.
Method of the class: SettingsUISchema{}
No Hooks.
Returns
null. Nothing (null).
Usage
$result = SettingsUISchema::assert_field_save( $field ): void;
- $field(array) (required)
- Field definition.
SettingsUISchema::assert_field_save() SettingsUISchema::assert field save code WC 11.2.1
private static function assert_field_save( array $field ): void {
$save = $field['save'] ?? null;
if ( null !== $save && ! is_array( $save ) ) {
throw self::invalid_schema( sprintf( 'Field "%s" save metadata must be an array.', $field['id'] ) );
}
$adapter = self::get_field_save_adapter( $field );
if ( ! is_string( $adapter ) || ! in_array( $adapter, array( 'form_post', 'none' ), true ) ) {
throw self::invalid_schema( sprintf( 'Field "%s" save adapter must be "form_post" or "none".', $field['id'] ) );
}
if ( is_array( $save ) && array_key_exists( 'name', $save ) ) {
self::assert_non_empty_string( $save['name'], sprintf( 'Field "%s" save name must be a non-empty string.', $field['id'] ) );
}
if ( 'form_post' === $adapter ) {
$name = is_array( $save ) && array_key_exists( 'name', $save ) ? $save['name'] : $field['id'];
if ( ! self::is_supported_form_post_name( $name, 'array' === $field['type'] ) ) {
throw self::invalid_schema( sprintf( 'Field "%s" save name "%s" is not a supported form-post field name.', $field['id'], $name ) );
}
}
if ( is_array( $save ) && array_key_exists( 'initialValue', $save ) ) {
if ( ! self::is_form_value( $save['initialValue'] ) ) {
throw self::invalid_schema( sprintf( 'Field "%s" save.initialValue must be a string or string list.', $field['id'] ) );
}
if ( ! self::is_form_value_for_field( $save['initialValue'], $field ) ) {
throw self::invalid_schema( sprintf( 'Field "%s" save.initialValue cannot be replayed safely through classic form-post semantics.', $field['id'] ) );
}
}
if ( 'info' === $field['type'] && 'none' !== $adapter ) {
throw self::invalid_schema( sprintf( 'Field "%s" of type "info" must use the "none" save adapter.', $field['id'] ) );
}
}