Ergebnis 1 bis 4 von 4

Thema: Feld in Mitgliederverwaltung über DCA mit laufender Nummer vorbelegen

  1. #1
    Contao-Nutzer Avatar von mambamanni
    Registriert seit
    09.04.2010.
    Beiträge
    23

    Standard Feld in Mitgliederverwaltung über DCA mit laufender Nummer vorbelegen

    Hallo ich würde mal Hilfe benötigen.
    Ich habe in der Mitgliederverwaltung mit dem xtmembers_fieldeditor ein zusätzliches Feld "Mitgliedsnummer" angelegt. Die Mitgliederverwaltung wird nur im Backend von den Administratoren bedient.
    Diese Mitgliedsnummer ist eine eindeutige fortlaufende Nummer. Da es mühsam ist immer die letzte vergebene Nummer raus zu suchen bzw. mit zu notieren wäre es gut wenn ich dieses Feld bei einer Neuanlage mit der nächsten fortlaufenden Nummer vorbelegen könnte. Derzeit stehen die Mitgliedsnummern z.B. auf 1063. Die Mitgliedsnummern wurden beim ersten Mitglied mit 1000 gestartet.
    Kann ich das irgendwie über die DCAconfig lösen.

    $GLOBALS['TL_DCA']['tl_member']['fields']['xt_mitgliednr']= ??????????

    Wäre schön wenn mir jemand helfen kann.
    Vielen Dank..
    Manni

  2. #2
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.451
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Moin Manni,
    mit bissel Programierung ist das fix gemacht.

    Hab das hier so gelößt:

    - Feld: https://github.com/rsclg/RscClubMemb...member.php#L69
    - Callback: https://github.com/rsclg/RscClubMemb...ember.php#L275

    Gruß, Cliff

  3. #3
    Contao-Nutzer Avatar von mambamanni
    Registriert seit
    09.04.2010.
    Beiträge
    23

    Standard

    Danke Cliff für deine rasend schnelle Antwort
    Das sieht gut aus und ich werde es mal so versuchen.

    Vielen Dank
    Grüße
    Manni

  4. #4
    Contao-Nutzer
    Registriert seit
    27.01.2016.
    Beiträge
    12

    Standard Es klappt nur im Backend, nicht bei der Registrierung

    Zitat Zitat von cliffparnitzky Beitrag anzeigen
    Moin Manni,
    mit bissel Programierung ist das fix gemacht.

    Hab das hier so gelößt:

    - Feld: https://github.com/rsclg/RscClubMemb...member.php#L69
    - Callback: https://github.com/rsclg/RscClubMemb...ember.php#L275

    Gruß, Cliff

    Contao 4.13.34
    PHP 8.1


    Hallo Cliff,

    ich hoffe, es ist in Ordnung, wenn ich das Thema mal aufgreife.

    Ich habe über die DCA in der tl_member ein neues Feld Kundennummer hinzugefügt und es mit Hilfe deines Posts auch geschafft, eine fortlaufende Kundennummer zu generieren. Dafür schonmal vielen Dank.

    Die neue tl_member.php ist im Ordner contao/dca und den Prod.-Cache erneuere ich auch immer.

    Allerdings klappt das nur, wenn ich im Backend einen Kunden neu anlege. Wenn ich über das Registrierungsformular einen neuen Kunden anlege (also eine Registrierung simuliere), speichert er zwar auch die neue, fortlaufende Kundennummer, aber ich weiß nicht wo. In der Datenbank wird immer die per default gesetzte 0 gespeichert.

    Erst wenn ich den Kunden im Backend aufrufe und auf Speichern klicke, wird auch die Kundennummer gespeichert.

    Kannst du mir einen Tipp geben, wie die Kundennummer auch direkt bei der Registrierung in der Datenbank gespeichert wird?

    Ich habe es auch schon mit save_callback versucht, aber damit kenne ich mich nicht wirklich aus.

    Den Code habe ich etwas verändert bzw. angepasst, da ich RscClubMember nicht nutze. Ich habe ganz oben und unten den letzten Teil mit "addDateAdded" weggelassen.

    Zweimal habe ich noch RscClubMemberFields stehen. Muss ich das evt. durch was anderes ersetzen?

    Aber wie schon gesagt, im Backend klappt es einwandfrei.

    Schonmal vielen Dank und viele Grüße

    Michael


    HTML-Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['customernumber'] = array(
    'label' => array('Kundennummer','Wird automatisch vergeben.'),
    'exclude' => true,
    'search' => true,
    'sorting' => true,
    'flag' => DataContainer::SORT_INITIAL_LETTER_DESC,
    'inputType' => 'text',
    'eval' => array('feEditable' => false, 'feViewable' => false, 'feGroup' => 'address', 'tl_class' => 'clr w50', 'mandatory' => true, 'rgxp' => 'digit', 'unique' => true, 'alwaysSave' => true),
    'load_callback' => array(array('RscClubMemberFields', 'getCustomerNumber')),
    'sql' => "int(10) unsigned NOT NULL default '0'"
    );
    
    
    ---------------------------------------------------------------------------
    
    
    class RscClubMemberFields extends tl_member
    {
    	/**
    	 * Constructor, initialize the object.
    	 */
    	public function __construct() {
    		parent::__construct();
    	}
    
    	/**
    	 * Returns the member number, if no one is set the next free number will be searched in database
    	 */
    	public function getCustomerNumber($varValue, DataContainer $dc) {
    		if ($varValue != null && $varValue > 0) {
    			return $varValue;
    		}
    		
    		// seems there is not member number set, so select the next free number from database
    		$lastCustomerNumber = $this->Database->prepare("SELECT max(customernumber) as max FROM tl_member")->execute()->next()->max;
    		
    		return $lastCustomerNumber + 1;
    	}
    }

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •