Skip to content

Rendering

Piotr Kierzniewski edited this page Nov 8, 2017 · 1 revision

Rendering form

Motiforms has built in helper functions to render html form. These helpers are basicly Symfony framework helpers stripped from framework specific functions and wrapped with some helpful html classes.

Lets say we have simple contact form instance object with fields: full_name, email, message. To render form you must create form view instane object which can communiate with render engine. Next you can render whole form using render engine form helper method.

    $engine = mf_get_engine();

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

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

This will output nice html.

<form name="contact" method="post">
    <div id="contact">
        <div class="field field--text">
            <div class="field__label field--text__label">
                <label class="required" for="contact_full_name">Full name</label>
            </div>
            <div class="field__input field--text__input">
                <input type="text" name="contact[full_name]" id="contact_full_name" required="required" />
            </div>
        </div>
        <div class="field field--email">
            <div class="field__label field--email__label">
                <label class="required" for="contact_last_name">Last name</label>
            </div>
            <div class="field__input field--email__input">
                <input type="email" name="contact[last_name]" id="contact_last_name" required="required" />
            </div>
        </div>
        <div class="field field--textarea">
            <div class="field__label field--textarea__label">
                <label class="required" for="contact_message">Message</label>
            </div>
            <div class="field__input field--textarea__input">
                <textarea name="contact[message]" id="contact_message" required="required"></textarea>
            </div>
        </div>
    </div>
</form>

Customize rendering

Render engine provide list of helpers which can help you fit form output to your needs.

To add message inside a form you can use widget helper.

<?php echo $view['form']->start( $form ); ?>
    <h2>Please fill form below</h2>
    <?php echo $view['form']->widget( $form ); ?>
<?php echo $view['form']->end( $form ); ?>

To render fields in coloums you can use row helper.

<div class="container">
    <?php echo $view['form']->start( $form ); ?>
        <div class="row">
            <div class="col-6">
                <?php echo $view['form']->row( $form->get('full_name') ); ?>
            </div>
            <div class="col-6">
                <?php echo $view['form']->row( $form->get('email') ); ?>
            </div>
        </div>
        <div class="row">
            <div class="col-12">
                <?php echo $view['form']->row( $form->get('message') ); ?>
            </div>
        </div>
    <?php echo $view['form']->end( $form ); ?>
</div>

Read Symfony rendering engine form function reference to learn more about helpers. Rember that documentation use twig render engine and Motiforms use pure php so form_widget helper from Symfony documentation in pure php will be $view['form']->widget and form_row will be $view['form']->row and so on.

Clone this wiki locally