The validateFormField
hook is triggered when a form field is submitted. It
passes the widget object and the form ID as arguments and expects a widget
object as return value.
\Contao\Widget $widget
Object of the current front end widget. Use it to access form field properties.
string $formId
Alias of the current form. Used in the value
attribute of the hidden form field FORM_SUBMIT
. Do not confuse with $form->id
.
array $formData
Form configuration data from the tl_form
table.
\Contao\Form $form
The form instance.
Return the $widget
instance after modification or your custom widget.
// src/EventListener/ValidateFormFieldListener.php
namespace App\EventListener;
use Contao\CoreBundle\DependencyInjection\Attribute\AsHook;
use Contao\Form;
use Contao\Widget;
#[AsHook('validateFormField')]
class ValidateFormFieldListener
{
public function __invoke(Widget $widget, string $formId, array $formData, Form $form): Widget
{
if ('myform' === $formId && $widget instanceof \Contao\FormTextField && 'mywidget' === $widget->name) {
// Do your custom validation and add an error if widget does not validate
if (!$this->validateWidget($widget)) {
$widget->addError('My custom widget error');
}
}
return $widget;
}
}