PHP code example of motivast / motiforms

1. Go to this page and download the library: Download motivast/motiforms library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

motivast / motiforms example snippets


use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

class ContactForm {

	/**
	 * Form instance
	 *
	 * FormType
	 */
	private $form;

	/**
	 * ContacForm constructor
	 *
	 * @return ContacForm
	 */
	public function __construct() {

		$this->define_hooks();
	}

	/**
	 * Create and process contact form
	 *
	 * This method is executed by wp action hook.
	 * It will be executed only on page which has contact
	 * shortcode.
	 *
	 * @return void
	 */
	public function controller() {

		global $post;

		// Check if current view is page and page has content shortcode
		if ( is_page() && has_shortcode( $post->post_content, 'contact' ) ) {

			$factory = mf_get_factory();

			// Create form
			$this->form = $factory->create();

			// Add fields to form
			$this->form->add( 'full_name', TextType::class );
			$this->form->add( 'email', EmailType::class );
			$this->form->add( 'message', TextareaType::class );
			$this->form->add( 'submit', SubmitType::class );

			// Get request object
			$request = mf_get_request();

			// Handle request
			$this->form->handleRequest( $request );

			// Check if form is valid
			if ( $this->form->isSubmitted() && $this->form->isValid() ) {

				// Get data from the form
				$data = $this->form->getData();

				// Define filters
				$filters = array(
					'full_name' => FILTER_SANITIZE_STRING,
					'email' => FILTER_SANITIZE_STRING | FILTER_SANITIZE_EMAIL,
					'message' => FILTER_SANITIZE_STRING,
				);

				// Fields sanitization
				$sanitized_data = filter_var_array( $data, $filters );

				// Perform action with form data e.g. send an e-mail

				// Redirect user with success parameter to prevent double submitting form
				wp_safe_redirect( $this->get_redirect_url() );
			}
		}
	}

	/**
	 * Render contact form.
	 *
	 * This method is executed by contact shortcode.
	 *
	 * @return string
	 */
	public function render() {

		$success =  filter_input( INPUT_GET, 'success', FILTER_SANITIZE_NUMBER_INT );

		if( '1' === $success ) {
			return sprintf('<h2>%s</h2>', __('Thank you for submitting the form. We will contact you shortly.') );
		}

		$form_view = $this->form->createView();

		$engine = mf_get_engine();

		return $engine['form']->form( $form_view, array('attr' => array('novalidate' => 'novalidate') ) );

	}

	/**
	 * Method executed by constructor to define hooks and
	 * create and render contact form.
	 *
	 * @return void
	 */
	private function define_hooks() {

		add_action( 'wp', array( $this, 'controller' ) );

		add_shortcode( 'contact', array( $this, 'render' ) );
	}

	/**
	 * Build url for form redirect
	 *
	 * @return string
	 */
	private function get_redirect_url() {

		$url = get_permalink();

		$query = parse_url($url, PHP_URL_QUERY);

		// Returns a string if the URL has parameters or NULL if not
		if ($query) {
			$url .= '&success=1';
		} else {
			$url .= '?success=1';
		}

		return $url;
	}
}

// Initialize contact form
new ContactForm();