Ein bisschen weiter geforscht und ausprobiert.
Der ValidateFormFieldListener.php ist nur für normale Contao Formulare und bringt mir das Registrierungs Modul anscheinend nichts.
Liege ich da richtig?
Dann habe ich jetzt probiert:
PHP-Code:
// src/EventListener/ExtendRegistrationModuleListener.php
namespace App\EventListener;
use Contao\CoreBundle\ServiceAnnotation\Callback;
use Contao\ModuleRegistration;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* @Callback(table="tl_module", target="config.onload")
*/
class ExtendRegistrationModuleListener
{
private $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
public function __invoke(ModuleRegistration $module): void
{
if ($module->type === 'registration') {
$GLOBALS['TL_HOOKS']['validateFormField'][] = array('App\EventListener\ValidateLastNameListener', 'validate');
}
}
}
zusammen mit dieser Datei:
PHP-Code:
// src/EventListener/ValidateLastNameListener.php
namespace App\EventListener;
use Contao\CoreBundle\ServiceAnnotation\Callback;
use Contao\Form;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
/**
* @Callback(table="tl_form_field", target="fields.options.validate.lastname")
*/
class ValidateLastNameListener extends ConstraintValidator
{
private $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
public function validate($value, Constraint $constraint): void
{
$form = $this->requestStack->getCurrentRequest()->get('form_id');
if ($form === 'registration' && $value !== '1000') {
$this->context->buildViolation($constraint->message)
->setParameter('{{ value }}', $value)
->addViolation();
}
}
}
Allerdings greift die Datei "ExtendRegistrationModuleListener.php" garnicht.
Also irgendwo habe ich da noch ein Verständnis Problem mit der Modul Erweiterung.