Templates Example

$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.

Leave a Reply

Your email address will not be published. Required fields are marked *


*