Habe mir deine Links durchgelesen. Ich sollte erwähnen, dass ich Contao 4.4 benutze und in meinem Vorgehen eventuell etwas Versionsabhängiges übersehen habe, da die Doku ja auch für höhere Versionen gedacht ist.
Die folgende Fehlermeldung erhalte ich nun
Code:
app.CRITICAL: An exception occurred. {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ClassNotFoundException(code: 0): Attempted to load class \"AddCustomRegexpListener::class\" from namespace \"App\\EventListener\".\nDid you forget a \"use\" statement for another namespace? at C:\\xampp\\htdocs\\workspace\\mindup\\vendor\\contao\\core-bundle\\src\\Resources\\contao\\library\\Contao\\System.php:170)"} []
Meine Vorgehensweise:
- Ich habe die Ordner src, app/Resources/contao, app/Resources/contao/dca, app/Resources/contao/languages, app/Resources/contao/config und app/config angelegt, da sie in meiner installierten Version nicht vorhanden waren (siehe https://docs.contao.org/dev/getting-...g-development/)
- danach habe ich die parameters.yml nach app/config geschoben (siehe https://docs.contao.org/dev/getting-...g-development/)
- Erstellung der tl_member.php in app/Resources/contao/dca
PHP-Code:
use Contao\CoreBundle\DataContainer\PaletteManipulator;
$GLOBALS['TL_DCA']['tl_member']['fields']['code'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_member']['code'],
'exclude' => true,
'inputType' => 'text',
'eval' => array(
'mandatory' => true,
'rgxp' => 'code',
'minlength' => 5,
'maxlength' => 5,
'feGroup' => 'login',
'feEditable'=> true,
'feViewable'=> false
),
'sql' => "varchar(5) NOT NULL default ''"
);
PaletteManipulator::create()->addField('code', 'username');
PaletteManipulator::create()->applyToPalette('default', 'tl_member');
- Erstellung der tl_member.php in app/Resources/contao/languages/de
PHP-Code:
$GLOBALS['TL_LANG']['tl_member']['code'] = array
(
'Code',
'Bitte geben Sie den 5-stelligen Code ein.'
);
- dann habe ich den folgenden Code in der composer.json hinzugefügt (siehe https://docs.contao.org/dev/getting-...g-development/)
PHP-Code:
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
- Erstellung der config.php in app/Resources/contao/config
PHP-Code:
$GLOBALS['TL_HOOKS']['addCustomRegexp'][] = array('App\EventListener\AddCustomRegexpListener::class', 'onAddCustomRegexp');
- und als letztes die Erstellung der AddCustomRegexpListener.php in src/EventListener
PHP-Code:
namespace App\EventListener;
use Contao\Widget;
class AddCustomRegexpListener
{
/**
* @Hook("addCustomRegexp")
*/
public function onAddCustomRegexp(string $regexp, $input, Widget $widget): bool
{
if ($regexp === 'code') {
if($input!= "00000") $objWidget->addError("Der eingegebene Code ist ungültig!");
return true;
}
return false;
}
}
Edit:
Bin auf folgenden Forumpost gestoßen https://community.contao.org/de/show...-use-statement
Im letzten Beitrag geht es genau um mein Problem. Die Lösung mit der autoload.php habe ich ja mit der Variante über den Code im composer.json gelöst oder?
Lesezeichen