Templating with fluid

Table of content:

Templating a form

Example :

Php code

$mymodel = $this->myModelRepository->findByUid($modelIdentifier);
$form = \Ameos\AmeosForm\Form\Factory::make('tx_myplugin', $mymodel);
$form->add('name', 'text')->addConstraint('name', 'required', 'Name is mandatory');
$form->add('email', 'email')->addConstraint('email', 'email', 'Email is not valid');
$form->add('submit', 'submit', array('label' => 'Send'));
$this->view->assign('form', $form);

Template html

{namespace form=Ameos\AmeosForm\ViewHelpers}
<form:form form="{form}">
        <f:if condition="{errors}">
                <div class="errors">
                        <f:for each="{errors}" as="error">
                                <span class="error">{error}</span>
                        </f:for>
                </div>
        </f:if>
        <div class="form">
                <p><label for="tx_myplugin_name"><f:translate key="name" /></label>{name}</p>
                <p><label for="tx_myplugin_email"><f:translate key="email" /></label>{email}</p>
                <p><form:element element="{submit}" class="button" />
        </div>
</form:form>

Templating a list

Example :

Php code (search action)

$searchform = \Ameos\AmeosForm\Form\Factory::make('tx_myplugin', $this->myModelRepository);
$searchform->add('name', 'text');
$searchform->add('email', 'email');
$searchform->add('submit', 'submit', array('label' => 'Search'));

$template = ExtensionManagementUtility::extPath('my_ext') . 'Resources/Private/Templates/Controller/List.html';
$list = $this->objectManager->create(\Ameos\AmeosForm\Library\RecordList::class, $searchform, $template, $this->controllerContext);

$this->view->assign('my-searchform', $searchform);
$this->view->assign('my-list', $list);

Template html Search.html

{namespace form=Ameos\AmeosForm\ViewHelpers}
<form:form form="{my-searchform}">
        <div class="form">
                <p><label for="tx_myplugin_name"><f:translate key="name" /></label>{name}</p>
                <p><label for="tx_myplugin_email"><f:translate key="email" /></label>{email}</p>
                <p><form:element element="{submit}" class="button" />
        </div>
</form:form>
<form:list list="{my-list}" />

Template html List.html

{namespace form=Ameos\AmeosForm\ViewHelpers}
<f:widget.paginate objects="{records}" as="paginatedRecords" configuration="{itemsPerPage:20}">
<table>
        <thead>
                <tr>
                        <th><form:sortlink column="name"><f:translate key="name" /></form:sortlink></th>
                        <th><form:sortlink column="email"><f:translate key="email" /></form:sortlink></th>
                </tr>
        </thead>
        <tbody>
                <f:for each="{paginatedRecords}" as="record" iteration="itemIteration">
                        <f:if condition="{itemIteration.isEven}">
                                <f:then><tr class="even"></f:then>
                                <f:else><tr class="odd"></f:else>
                        </f:if>
                                <td>{record.name}</td>
                                <td>{record.email}</td>
                        </tr>
                </f:for>
        </tbody>
</table>
</f:widget.paginate>