Select Git revision
composer.lock
-
Bartek Jaskulski authored
Signed-off-by:
Bart Jaskulski <bjaskulski@protonmail.com>
Bartek Jaskulski authoredSigned-off-by:
Bart Jaskulski <bjaskulski@protonmail.com>
JsonNormalizedRenderer.php 1.96 KiB
<?php
namespace WPDesk\Forms\Renderer;
use WPDesk\Forms\FieldProvider;
use WPDesk\Forms\FieldRenderer;
/**
* Can render form fields as JSON.
*
* @package WPDesk\Forms\Renderer
*/
class JsonNormalizedRenderer implements FieldRenderer {
/**
* @param FieldProvider $provider
* @param array $fields_data
* @param string $name_prefix
*
* @return array Normalized fields with data.
*/
public function render_fields( FieldProvider $provider, array $fields_data, string $name_prefix = '' ): array {
$rendered_fields = [];
foreach ( $provider->get_fields() as $field ) {
$rendered = [
'name' => $field->get_name(),
'template' => $field->get_template_name(),
'multiple' => $field->is_multiple(),
'disabled' => $field->is_disabled(),
'readonly' => $field->is_readonly(),
'required' => $field->is_required(),
'prefix' => $name_prefix,
'value ' => isset( $fields_data[ $field->get_name() ] ) ? $fields_data[ $field->get_name() ] : $field->get_default_value(),
];
if ( $field->has_classes() ) {
$rendered['class'] = $field->get_classes();
}
if ( $field->has_description() ) {
$rendered['description'] = $field->get_description();
}
if ( $field->has_description_tip() ) {
$rendered['description_tip'] = $field->get_description_tip();
}
if ( $field->has_label() ) {
$rendered['label'] = $field->get_label();
}
if ( $field->has_placeholder() ) {
$rendered['placeholder'] = $field->get_placeholder();
}
$options = $field->get_possible_values();
if ( $options ) {
$rendered['options'] = $options;
}
if ( $field->has_data() ) {
$data = $field->get_data();
$rendered['data'] = [];
foreach ( $data as $data_name => $data_value ) {
$rendered['data'][] = [
'name' => $data_name,
'value' => $data_value,
];
}
}
if ( json_encode( $rendered ) !== false ) {
$rendered_fields[] = $rendered;
}
}
return $rendered_fields;
}
}