LLMS_Form_Field::get_field_html()
Retrieve the full HTML for the field.
Return Return
(string)
Source Source
File: includes/forms/class-llms-form-field.php
protected function get_field_html() {
/**
* Allow 3rd parties to create custom field types or their own field HTML methods.
*
* Returning a non-empty string will override default HTML generation and use the returned HTML instead.
*
* @since 5.0.0
*
* @param string $html Override html.
* @param array $settings Array of field settings initially passed to the class constructor.
* @param LLMS_Form_Field $field Form field object.
*/
$override = apply_filters( 'llms_form_field_get_' . $this->settings['type'] . '_html', '', $this->settings, $this );
if ( ! empty( $override ) ) {
return $override;
}
$extra_attrs = array();
$inner_html = '';
$self_closing = false;
switch ( $this->settings['type'] ) {
case 'button':
case 'reset':
case 'submit':
$tag = 'button';
$classes = array( 'llms-field-button' );
$inner_html = $this->settings['value'];
$extra_attrs['type'] = $this->settings['type'];
break;
case 'checkbox':
case 'radio':
$is_group = ! empty( $this->settings['options'] );
$tag = $is_group ? 'div' : 'input';
$self_closing = ! $is_group;
$classes = array( sprintf( 'llms-field-%s', $this->settings['type'] ) );
if ( ! $is_group ) {
$extra_attrs['type'] = $this->settings['type'];
if ( true === $this->settings['checked'] ) {
$extra_attrs['checked'] = 'checked';
}
} else {
$classes[] = 'llms-input-group';
$fields = $this->explode_options_to_fields( false );
foreach ( $fields as $field ) {
$inner_html .= $field->get_html();
}
}
break;
case 'html':
$tag = 'div';
$classes = array( 'llms-field-html' );
$inner_html = $this->settings['value'];
break;
case 'select':
$tag = 'select';
$classes = array( 'llms-field-select' );
$inner_html = $this->get_options_html();
break;
case 'textarea':
$tag = 'textarea';
$classes = array( 'llms-field-textarea' );
$inner_html = $this->settings['value'];
break;
default:
$tag = 'input';
$self_closing = true;
$classes = array( 'llms-field-input' );
$extra_attrs['type'] = $this->settings['type'];
}
$extra_attrs['class'] = implode( ' ', $this->classes_ensure_array( $this->settings['classes'], $classes ) );
$attributes = array_merge( $this->get_html_attributes( $this->settings ), $extra_attrs );
ksort( $attributes );
$attrs = '';
foreach ( $attributes as $attr => $val ) {
$attrs .= sprintf( ' %1$s="%2$s"', $attr, $val );
}
$open = $self_closing ? sprintf( '<%1$s%2$s', $tag, $attrs ) : sprintf( '<%1$s%2$s>', $tag, $attrs );
$close = $self_closing ? ' />' : sprintf( '</%s>', $tag );
return sprintf( '%1$s%2$s%3$s', $open, $inner_html, $close );
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 6.2.0 | Moved exploding of checkbox and radio options to explode_options_to_fields(). |
| 5.0.0 | Introduced. |