Form::generate( array $form_args = array() )
Description #
Generate form.
Parameters #
- $form_argsarray (Optional) Form generate arguments.
- 'form_action'
(string) Custom form action url. - 'hidden_fields'
(array) Custom hidden input fields.
- 'form_action'
Source #
File: lib/class-form.php
public function generate( $form_args = array() ) { // Don't do anything if no fields. if ( empty( $this->args['fields'] ) ) { echo '<p class="ap-form-nofields">'; echo esc_attr( sprintf( // Translators: Placeholder contain form name. esc_attr__( 'No fields found for form: %s', 'anspress-question-answer' ), $this->form_name ) ); echo '</p>'; return; } $form_args = wp_parse_args( $form_args, array( 'form_action' => '', 'hidden_fields' => false, 'ajax_submit' => true, 'submit_button' => $this->args['submit_button'], 'form_tag' => $this->args['form_tag'], ) ); if ( ! empty( $this->args['hidden_fields'] ) ) { $form_args['hidden_fields'] = wp_parse_args( $form_args['hidden_fields'], $this->args['hidden_fields'] ); } /** * Allows filtering arguments passed to @see AnsPress\Form\generate() method. Passed * by reference. * * @param array $form_args Form arguments. * @param object $form Current form object. * @since 4.1.0 */ $form_args = apply_filters_ref_array( 'ap_generate_form_args', array( $form_args, $this ) ); $action = ! empty( $form_args['form_action'] ) ? esc_url( $form_args['form_action'] ) : ''; if ( true === $form_args['form_tag'] ) { echo '<form id="' . esc_attr( $this->form_name ) . '" name="' . esc_attr( $this->form_name ) . '" method="POST" enctype="multipart/form-data" action="' . esc_attr( $action ) . '" ' . ( true === $form_args['ajax_submit'] ? ' apform' : '' ) . '>'; } // Output form errors. if ( $this->have_errors() ) { echo '<div class="ap-form-errors">'; foreach ( (array) $this->errors as $code => $msg ) { echo '<span class="ap-form-error ecode-' . esc_attr( $code ) . '">' . esc_html( $msg ) . '</span>'; } echo '</div>'; } echo $this->generate_fields(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo '<input type="hidden" name="ap_form_name" value="' . esc_attr( $this->form_name ) . '" />'; if ( true === $form_args['submit_button'] ) { echo '<button type="submit" class="ap-btn ap-btn-submit">' . esc_html( $this->args['submit_label'] ) . '</button>'; } echo '<input type="hidden" name="' . esc_attr( $this->form_name ) . '_nonce" value="' . esc_attr( wp_create_nonce( $this->form_name ) ) . '" />'; echo '<input type="hidden" name="' . esc_attr( $this->form_name ) . '_submit" value="true" />'; // Add custom hidden fields. if ( ! empty( $form_args['hidden_fields'] ) ) { foreach ( $form_args['hidden_fields'] as $field ) { echo '<input type="hidden" name="' . esc_attr( $field['name'] ) . '" value="' . esc_attr( $field['value'] ) . '" />'; } } /** * Action triggered after all form fields are generated and before closing * form tag. This action can be used to append more fields or HTML in form. * * @param object $form Current form class. */ do_action_ref_array( 'ap_after_form_field', array( $this ) ); if ( true === $this->args['form_tag'] ) { echo '</form>'; } if ( ! empty( $this->after_form ) ) { echo $this->after_form; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } }
Expand full source code Collapse full source code View on GitHub: lib/class-form.php:197
Add your comment