-
Notifications
You must be signed in to change notification settings - Fork 3
Rendering
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>
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.