Hallo zusammen, ich würde gerne die Pflichtfelder im Bestellprozess ändern, konkret hätte ich gerne das Geburtsdatum als Pflichtfeld. Da das Plugin Registration Configurator aus dem Store verschwunden ist, muss ich da selbst eingreifen. Ich würde dazu ungern im Core einfach die Werte ändern und habe deshalb nun versucht diese über ein Plugin zu überschreiben. Für meine Begriffe muss ja „lediglich“ das Array $rules aus der Action validatePersonal im Register Controller angepasst werden. Ich habe mir jetzt ein PostDispatch-Event erstellt und dort erfolglos versucht die Werte zu überschreiben. Habe ich da einen Denkfehler? Was mache ich falsch? public function install() { $event = $this-\>createEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Register', 'onPostDispatch' ); $this-\>subscribeEvent($event); return true; } public static function onPostDispatch(Enlight\_Event\_EventArgs $args) { $args-\>setProcessed(true); if ($args-\>getSubject()-\>Request()-\>getActionName() === 'validatePersonal') { $rules = array( 'customer\_type'=\>array('required'=\>0), 'salutation'=\>array('required'=\>1), 'firstname'=\>array('required'=\>1), 'lastname'=\>array('required'=\>1), 'phone'=\>array('required'=\> intval(Shopware()-\>Config()-\>get('requirePhoneField'))), 'fax'=\>array('required'=\>0), 'text1'=\>array('required'=\>0), 'text2'=\>array('required'=\>0), 'text3'=\>array('required'=\>0), 'text4'=\>array('required'=\>0), 'text5'=\>array('required'=\>0), 'text6'=\>array('required'=\>0), 'sValidation'=\>array('required'=\>0), 'birthyear'=\>array('required'=\>1), 'birthmonth'=\>array('required'=\>1), 'birthday'=\>array('required'=\>1), 'dpacheckbox'=\>array('required'=\>(Shopware()-\>Config()-\>get('ACTDPRCHECK'))?1:0) ); } }
Vielen Dank vorab für Eure Unterstützung!
Na ich würde mal behaupten da ist fast alles falsch: Erst einmal würde ich sehr stark bezweifeln, dass das PostDispatch-Event das richtige ist. Außerdem hängst du dich an das globale PostDispatch und prüfst dann, ob du dich im Accountbereich befindest. Registriere dich doch direkt an das richtige Event (selbst wenn es - und das ist sehr unwahrscheinlich - das PostDispatch-Event sein soll solltest du dich dann an das PostDispatch-Event des Account-Controllers hängen). Wo im Shopware-Code wird denn die Überprüfung gemacht - Wo in welcher Klasse und in welcher Funktion? Wie wird die Überprüfung vorgenommen? Welche Events stehen mir an dieser Stelle zur Verfügung? Zweitens erstellst du einfach ein Array. Weder holst du dir Daten ab die du manipulieren möchtest (ist u.U. auch nicht nötig) noch setzt du einen Return-Wert um Daten zu manipulieren (absolut Nötig!). Ich würde dir empfehlen dich mit den offizielen Shopware Plug-In Tutorials erst einmal auseinander zu setzen. http://community.shopware.com/Developer … t_796.html