$form = new Formagic(array( 'attributes' => array( 'class' => 'template' ) )); // assign items $form ->addItem('input', 'title', array( 'label' => 'Title', 'rules' => 'mandatory' )) ->addItem('input', 'subtitle', array( 'label' => 'Subtitle', )) ->addItem('input', 'author', array( 'label' => 'Article Author', )) ->addItem('textarea', 'myTextarea', array( )) ->addItem('submit', 'mySubmit', array( 'attributes' => array( 'class' => 'submit' ), 'label' => 'Publish' )); // assign templates to renderer Formagic::loadClass('Formagic_Renderer_Html'); $renderer = new Formagic_Renderer_Html(); // set just for item "title": 1 column, // special class for TR tag $rowTemplate = ' <tr> <td colspan="2">%LABEL%%ERROR%</td> </tr> <tr class="title"> <td colspan="2"%ERRORCLASS%>%INPUT%</td> </tr>'; $renderer->setItemRowTemplate($rowTemplate, 'title'); // default for all templates, can be set even // after a template for a specific item is defined $rowTemplate = ' <tr> <td>%LABEL%</td> <td align="right">%ERROR% <!-- Input -->%INPUT%</td> </tr>'; $renderer->setItemRowTemplate($rowTemplate, ''); // template for textarea item: 1 column $rowTemplate = ' <tr> <td colspan="2">%INPUT%</td> </tr>'; $renderer->setItemRowTemplate($rowTemplate, 'myTextarea'); // set custom mandatory marker: // some HTML attributes $renderer->setMandatoryMarkerTemplate( ' style="font-weight: bold;" ' . 'title="Value required"'); // set label template for all items: mandatory marker // has to be rendered into label tag $labelTemplate = ' <label for="%ID%"%ERRORCLASS%%MANDATORYMARKER%> %LABEL% </label> '; $renderer->setItemLabelTemplate($labelTemplate); // assign renderer to form $form->setRenderer($renderer); // print form if ($form->validate()) { echo '<p class="submitted"> <strong>Form status:</strong><br /> submitted </p>'; } echo $form->render();
Result
Description
You can set new default templates for every item, or you can set individual templates just for specific items.