DEPRECATION WARNING

This documentation is not using the current rendering mechanism and is probably outdated. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

Create a form

Table of content:

Creation and edition form

You can create an form for edit or create record.

$form = \Ameos\AmeosForm\Form\Factory::make('tx_myextension_myplugin', $mymodel);

Where $mymodel is an instance of an extbase model.

For creation :

$mymodel = GeneralUtility::makeInstance(\Vendor\Extension\Domain\Model\MyModel::class);

For edition :

$mymodel = $this->myModelRepository->findByUid($modelIdentifier);

Search form

You can create a search form.

$searchform = \Ameos\AmeosForm\Form\Factory::make('tx_myextension_myplugin', $myrepository);

You can add where clause with “addWhereClause” method.

Example :

$searchform->addWhereClause([
        'type'    => 'logicalOr',
        'clauses' => [
                ['field' => 'myfield', 'type'  => 'like', 'value' => 'myvalue1'],
                ['field' => 'myfield', 'type'  => 'like', 'value' => 'myvalue2'],
                ['field' => 'myfield', 'type'  => 'like', 'value' => 'myvalue3'],
        ]
]);
$searchform->addWhereClause([
        'field' => 'myfield',
        'type'  => 'equals',
        'value' => 'myvalue'
]);

You can associate a list with a search form.

$template = ExtensionManagementUtility::extPath('ameos_intervention') . 'Resources/Private/Templates/Controller/ActionList.html';
$list = $this->objectManager->create(\Ameos\AmeosForm\Library\RecordList::class, $searchform, $template, $this->controllerContext, 'field_to_order', 'order_direction (ASC | DESC)');

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

For templating list, see Templating with fluid part.

The repository used by the seach form must extends \Ameos\AmeosForm\Domain\Repository\SearchableRepository

Other form

You can create a form without model or repository link.

For example, a contact form without database insertion.

$form = \Ameos\AmeosForm\Form\Factory::make('tx_myextension_myplugin');

Bind a request

After submit, you can bind the request to the form. And after that, you can do everything you want : store in database, send a mail…

$mymodel = $this->myModelRepository->findByUid($modelIdentifier);

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

if($form->isSubmitted()) {
        $form->bindRequest($this->request);
        if($form->isValid()) {

                $this->myModelRepository->add($mymodel);

                $this->addFlashMessage('New record created');
                $this->redirect('index')
        }
}

$this->view->assign('form', $form);

Add an element to the form

After the creation of your form, you add element easily.

$form->add($name, $type', $configuration);

For example : $form->add(‘my-radiobutton’, ‘radio’, array(‘items’ => array(‘value1’ => ‘label 1’, ‘value2’ => ‘label 2’)));

All elements are detailled on Elements part.

Add a constraint to the form

After the creation of your form, you add constraint easily.

$form->addConstraint($field, $type, $message, $configuration); //  $configuration is optional. Depends the type of validator

For example : $form->addConstraint(‘my_field’, ‘required’, LocalizationUtility::translate(‘my_field.required’, ‘ExtensionKey’));

All constraints are detailled on Constraints part.

Disable form protection

If you want, you can disable form protection.

Crsf protection :

$form->disableCsrftoken();

Honeypot protection :

$form->disableHoneypot();