Hallo. Kann mir jemand erklären wie ich Zusatzfelder im CustomerWriteService einbaue? Es gibt die Musterdatei CustomerWriteServiceOverload. Da steht allerdings nur drin wie ein debug log geschrieben wird. Ich habe mit Overloads in CreateAccountContentControl und CreateAccountContentView jeweils ein neues Feld verbaut. Es wird aber leider nichts in der Datenbank gespeichert. Muß ich das noch in den CustomerWriteServiceOverload einfügen? Oder geht das über die addAddonValues? Gruß
/overloads/CreateAccountContentView PHP: class NEU_CreateAccountContentView extends NEU_CreateAccountContentView_parent{ protected function add_data() { $this->add_zusatzfeld(); return parent::add_data(); } protected function add_zusatzfeld() { $this->content_array['form_data']['zusatzfeld'] = array(); $this->content_array['form_data']['zusatzfeld']['name'] = 'zusatzfeld'; $this->content_array['form_data']['zusatzfeld']['value'] = htmlspecialchars_wrapper($this->customer_data_array['zusatzfeld']); $this->content_array['form_data']['zusatzfeld']['required'] = 0; }} /overloads/CreateAccountContentControl PHP: class NEU_CreateAccountContentControl extends NEU_CreateAccountContentControl_parent{ protected function get_customers_data() { $this->customer_data_array['zusatzfeld'] = xtc_db_prepare_input($this->v_data_array['POST']['zusatzfeld']); return parent::get_customers_data(); } protected function create_customer_sql_data_array() { $this->sql_data_array[TABLE_CUSTOMERS]['zusatzfeld'] = $this->customer_data_array['zusatzfeld']; return parent::create_customer_sql_data_array(); }} /template/module/create_account-USERMOD.html PHP: .......... <fieldset> <legend> Überschrift bla bla </legend> <div class="form-group"> <label for="{$form_data.zusatzfeld.name}" class="control-label col-sm-3"> Auswahl: </label> <div style="" class="col-sm-9 col-lg-6 input-container"> <input type="text" placeholder="Eingabe" id="{$form_data.zusatzfeld.name}" name="{$form_data.zusatzfeld.name}" class="form-control" value="{$form_data.zusatzfeld.value}" /> </div> </div> </fieldset> ..........
HI, du musst die Datei GXMainComponents/Extensions/Customers/CustomerInputToCollectionTransformer.inc.php überladen und dort mit der Methode _getCustomerAddonValuesFromInputArray deine eigenen Werte hinzufügen. Dazu legst eine neue Datei MyCustomerAddonValues.inc.php im Ordner GXUserComponents/overloads/CustomerInputToCollectionTransformer/ an mit folgendem Inhalt: PHP: <?phpclass MyCustomerAddonValues extends MyCustomerAddonValues_parent{ protected function _getCustomerAddonValuesFromInputArray(array $inputArray) { $myAddonValues = array('zusatzfeld1'=>$inputArray['zusatzfeld']; return MainFactory::create('EditableKeyValueCollection', $myAddonValues); }} Das ersetzt die Datei /overloads/CreateAccountContentControl, die wird nicht mehr benötigt.
Danke, bei ...$inputArray['zusatzfeld']); hat eine schließende Klammer gefehlt. zusatzfeld1 hab ich geändert in zusatzfeld Aber leider wird nichts in der Datenbank gespeichert...
Super! Stimmt. Die container_id entspricht der customers_id... Jetzt müsste ich das nur noch in der Kundenübersicht auslesen...