Title: Motiforms
Author: kierzniak
Published: <strong>Ugushyingo 10, 2017</strong>
Last modified: Ugushyingo 10, 2017

---

Search plugins

This plugin **hasn’t been tested with the latest 3 major releases of WordPress**.
It may no longer be maintained or supported and may have compatibility issues when
used with more recent versions of WordPress.

![](https://s.w.org/plugins/geopattern-icon/motiforms.svg)

# Motiforms

 By [kierzniak](https://profiles.wordpress.org/kierzniak/)

[Download](https://downloads.wordpress.org/plugin/motiforms.0.1.0.zip)

 * [Details](https://kin.wordpress.org/plugins/motiforms/#description)
 * [Reviews](https://kin.wordpress.org/plugins/motiforms/#reviews)
 *  [Installation](https://kin.wordpress.org/plugins/motiforms/#installation)
 * [Development](https://kin.wordpress.org/plugins/motiforms/#developers)

 [Support](https://wordpress.org/support/plugin/motiforms/)

## Description

#### WARNING

If you are not developer this plugin is not for you. Motiforms do not provide any
WordPress admin interface to creating forms.

#### Features

 * Handle form logic
 * Field sanitization
 * Field validation
 * Built in html rendering helpers
 * Flexibility
 * Based on advanced Symfony framework

#### Get started

To create simple contact form paste code bellow to your functions.php file. And 
paste `[contact]` shortcode to your contact page.

    ```
    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();
    ```

## Installation

 1. Visit Plugins > Add New
 2. Search for “Motiforms”
 3. Install and activate “Motiforms”
 4. Go to [get started](https://github.com/motivast/motiforms#user-content-get-started)
    section to see a simple example.

or

 1. Download plugin from wordpres.org repository or [release section](https://github.com/motivast/motiforms/releases/latest).
 2. Upload the motiforms directory to your /wp-content/plugins/ directory
 3. Activate the plugin through the”‘Plugins” menu in WordPress
 4. Go to [get started](https://github.com/motivast/motiforms#user-content-get-started)
    section to see a simple example.

## FAQ

  Installation Instructions

 1. Visit Plugins > Add New
 2. Search for “Motiforms”
 3. Install and activate “Motiforms”
 4. Go to [get started](https://github.com/motivast/motiforms#user-content-get-started)
    section to see a simple example.

or

 1. Download plugin from wordpres.org repository or [release section](https://github.com/motivast/motiforms/releases/latest).
 2. Upload the motiforms directory to your /wp-content/plugins/ directory
 3. Activate the plugin through the”‘Plugins” menu in WordPress
 4. Go to [get started](https://github.com/motivast/motiforms#user-content-get-started)
    section to see a simple example.

  Where I can find documentation?

Documentation for Motiforms can be found on github [wiki pages](https://github.com/motivast/motiforms/wiki).

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Motiforms” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ kierzniak ](https://profiles.wordpress.org/kierzniak/)

[Translate “Motiforms” into your language.](https://translate.wordpress.org/projects/wp-plugins/motiforms)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/motiforms/), check 
out the [SVN repository](https://plugins.svn.wordpress.org/motiforms/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/motiforms/) by [RSS](https://plugins.trac.wordpress.org/log/motiforms/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.1.0

 * Motiforms

## Meta

 *  Version **0.1.0**
 *  Last updated **8 years ago**
 *  Active installations **10+**
 *  WordPress version ** 3.8 or higher **
 *  Tested up to **4.8.28**
 *  Language
 * [English (US)](https://wordpress.org/plugins/motiforms/)
 * Tags
 * [contact form](https://kin.wordpress.org/plugins/tags/contact-form/)[custom form](https://kin.wordpress.org/plugins/tags/custom-form/)
   [form](https://kin.wordpress.org/plugins/tags/form/)[forms](https://kin.wordpress.org/plugins/tags/forms/)
   [symfony](https://kin.wordpress.org/plugins/tags/symfony/)
 *  [Advanced View](https://kin.wordpress.org/plugins/motiforms/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/motiforms/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/motiforms/reviews/)

## Contributors

 *   [ kierzniak ](https://profiles.wordpress.org/kierzniak/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/motiforms/)