Ergebnis 1 bis 36 von 36

Thema: Member Formular um Feld erweitern

  1. #1
    Contao-Nutzer
    Registriert seit
    24.07.2013.
    Beiträge
    24

    Standard Member Formular um Feld erweitern

    Hallo zusammen,

    ich bin gerade dabei einen Login auf einer Seite von mir zu implementieren und müsste dafür ein neues Feld in das Mitglieder Formular einbauen (Checkbox). Einige andere Felder die ich benötige habe ich durch Labeländerungen von existierenden und nicht benötigten Feldern schon umgesetzt, aber hierbei weiß ich leider nicht weiter. Leider konnte ich keine Anleitung o.Ä. finden wie man soetwas einbaut. Diese Checkboxen sollen dann später in dem Registrierungsmodul mit angezeigt werden.

    Kann mir dabei vlt. jemand weiterhelfen?


    Vielen Dank

    lbo

  2. #2
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.376
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Schau Dir mal xt_members an. Schau Dir danach an, was es macht (im Output!). Und dann kannst Du das selbst.

  3. #3
    Contao-Nutzer
    Registriert seit
    24.07.2013.
    Beiträge
    24

    Standard

    Diese Erweiterung hatte ich auch schon entdeckt und versuche mich noch durch den Code zu wühlen. Habe halt mit dem Erweiterungsaufbau noch so meine Probleme da ich nur ein Tutorial für die Erstellung von Erweiterungen gefunden habe und es dort um Version 3 ging, ich nutze aber leider Version 2.11.4 und kann nicht umsteigen.
    Werde noch etwas weiter im Code schnüffeln.

    Danke


    @Edit:
    Was ich noch vergessen hatte, diese Erweiterung ist für 2.11.4 nicht 100%ig kompatibel. Grundsätzlich funktioniert sie zwar, aber ich bekomme stellenweise DB Fehler angezeigt.
    Geändert von lbo (22.08.2013 um 11:22 Uhr)

  4. #4
    Contao-Nutzer
    Registriert seit
    24.07.2013.
    Beiträge
    24

    Standard

    Hey,
    habe vorhin noch ein nettes Tutorial gefunden für etwas ähnliches:
    http://de.contaowiki.org/Vorhandene_Module_erweitern
    Damit habe ich es geschafft mir ein neues Feld einzufügen und das ganze in eine eigene kleine Erweiterung ausgelagert.

    Vielen Dank für die Hilfe

    lbo

  5. #5
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.376
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ja, das ist ja im Prinzip gleich (bzw. xt_members erzeugt dasselbe). Ist zum anschauen ggf. besser.

    Schön, dass Du klargekommen ist.

  6. #6
    Contao-Nutzer
    Registriert seit
    24.07.2013.
    Beiträge
    24

    Standard

    Ist vor allem etwas schmaler als xt_members. Aber leider habe ich jetzt ein neues Problem, und zwar:
    Ich habe ein neues Feld in der DB hinzugefügt:
    - Modul/config/database.sql:
    Code:
    CREATE TABLE `tl_member`(
       `applications` text NOT NULL
    ) ENGINE=MYISAM DEFAULT CHARSET=utf8;
    - Modul/dca/tl_member.php:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['applications'] = array (
       
    'label'     => array(&$GLOBALS['TL_LANG']['tl_member']['aplications_title'], &$GLOBALS['TL_LANG']['tl_member']['aplications_description']),
       
    'exclude'   => 1,
       
    'filter'    => 1,
       
    'search'    => 1,
       
    'inputType' => checkboxWizard,
       
    'options'   => array('nameA''nameB''nameC'),
       
    'eval'      => array('multiple' => 1)
    );

    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace(',language;',',language;{applications_legend},applications;'$GLOBALS['TL_DCA']['tl_member']['palettes']['default']);
    $GLOBALS['TL_DCA']['tl_member']['list']['label']['fields'] = array('icon''firstname''lastname''applications''login''dateAdded'); 
    Nun sehe ich dieses neue Feld in der Anwendung und kann es auch über das Backend füllen, klappt alles wunderbar. Zeige ich aber jetzt dieses Feld in dem Registrierungsmodul an und registriere darüber einen neuen User wird das Feld nicht mit in die DB geschrieben.

    Um in der Liste der Felder, die im Registrierungsmodul angezeigt werden mein Feld hinzuzufügen habe ich folgenden Code benutzt, der erscheint mir noch recht 'dreckig' aber leider habe ich keinen schöneren Weg gefunden:
    PHP-Code:
    $tlModule = new tl_module();
    $editable $tlModule->getEditableMemberProperties();
    $editable['applications'] = $GLOBALS['TL_LANG']['tl_member']['aplications_title'];
    $GLOBALS['TL_DCA']['tl_module']['fields']['editable']['options'] = $editable;
    $GLOBALS['TL_DCA']['tl_module']['fields']['editable']['options_callback'] = null
    Kann mir jemand helfen udn sagen was ich ändern muss damit auch mein neues Feld bei einer Registrierung über das Registrierungsmodul gefüllt wird?


    Vielen Dank

    lbo
    Geändert von lbo (26.08.2013 um 08:00 Uhr)

  7. #7
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.972

    Standard

    in eval feEditable auf true setzen?

    https://contao.org/de/manual/3.0/dat...tml#evaluation
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  8. #8
    Contao-Nutzer
    Registriert seit
    24.07.2013.
    Beiträge
    24

    Standard

    Hallo fiedsch,
    das ist wesentlich sauberer als meine 'Lösung' zum Umgehen des Callbacks, danke.
    Aber leider werden meine Daten in dem neu eingefügten Feld im Registrierungsmodul immer noch nicht gespeichert.

    Hat dafür noch jemand eine Lösung?

    Gruß
    lbo

  9. #9
    Contao-Nutzer
    Registriert seit
    24.07.2013.
    Beiträge
    24

    Standard

    Nach unzähligen Tests und Versuchen bin ich leider noch kein Stück weiter. Habe schon mehrmals das Feld geändert, den Datentyp geändert und diverse eval Werte ausprobiert aber leider alles ohne Erfolg. Im Backend funktioniert mein neues Feld wie gewünscht, ich kann es füllen, speichern, updaten. Aber wenn ich es im Registrierungsmodul mit einblende wird es bei einer neuen Registrierung zwar angezeigt, aber nicht mitgespeichert und bleibt leer. Auch in der bereits erwähnten xt_members Erweiterung kann ich diesbezüglich keinen Unterschied feststellen, dass dort etwas anders gemacht wird als bei mir.

    Hat jemand noch eine Idee was ich machen könnte oder wo ich suchen könnte? Meinen Code habe ich bis auf die eval Änderung mit feEditable ja bereits gepostet.


    Vielen Dank im vorraus

    lbo

  10. #10
    Contao-Nutzer Avatar von darki777
    Registriert seit
    03.07.2009.
    Beiträge
    63

    Standard

    Hi Ibo,
    der Thread ist schon etwas älter, aber vielleicht hilft das ja dem ein oder anderen noch weiter. Die ganzen Konfigurationen die du brauchst sollten als Beispiel folgendes enthalten:

    PHP-Code:
    // Anpassung der Palette
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace
    (
        
    'street',
        
    'ustid,street',
        
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default']
    );
     
    // Hinzufügen der Feld-Konfiguration
    $GLOBALS['TL_DCA']['tl_member']['fields']['ustid'] = array
    (
        
    'label'     => &$GLOBALS['TL_LANG']['tl_member']['ustid'],
        
    'exclude'   => true,
        
    'inputType' => 'text',
        
    'eval'      => array('mandatory'=>false'rgxp'=>'extnd''maxlength'=>12'tl_class'=>'w50'"feEditable"=>true),
        
    'sql'       => "varchar(12) NOT NULL default ''"
    );

    // Hinzufügen der Übersetzung
    $GLOBALS['TL_LANG']['tl_member']['ustid'] = array
    (
        
    'USt-ID',
        
    'Bitte geben Sie eine gültige USt-ID ein.'
    ); 

    Viele Grüße
    darki
    ioCron - Web & Mobile Development, Webdesign - Unternehmen in Passau
    ioCron Twitter - Folgen und auf dem neuesten Stand bleiben

  11. #11
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    hallo darki,
    könntest du vielleicht bitte angeben wo genau du diese Änderungen gemacht hast? Bzw. ob das alles ist ? Fehlt da nicht der Db Eintrag ?
    Möchte für unseren Fanclub lediglich die Memberlist um ein internes und ein öffentliches Feld erweitern.
    xt_memberlist ist mir def. zu mächtig. Habe Memberlist bereits meinen Bedürfnissen angepasst (Auswahl eines 2. Templates für Intern etc.)
    Xt_fieldediter auch sehr übertrieben für ein bzw zwei Felder.

    Dazu kommt das ich mich bei jedem update mit zig Modulen auseinander setzen müsste .....so "nur" mit Memberlist da ich ja eh schon verändert habe.

    Wäre dir sehr dankbar wenn du mir dabei helfen könntest.

    Gruss Marc


    Nachtrag.....
    Hat sich erledigt.
    Habe es im Contao-Handbuch gefunden .
    Geändert von Mave2104 (26.07.2014 um 10:24 Uhr)

  12. #12
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    ich habe nun mein Contao mit einem eigenen "Modul" um einige Felder für unseren Fanclub erweitert. Nun stoße ich jedoch auf ein Problem mit folgendem Eintrag:

    $GLOBALS['TL_DCA']['tl_member']['fields']['fav_player'] = array
    (
    'label' => &$GLOBALS['TL_LANG']['tl_member']['fav_player'],
    'exclude' => true,
    'filter' => true,
    'inputType' => 'select',
    'options' => array('','57 - Ronny Arendt','14 - Steve Wagner'),
    'eval' => array('feGroup'=>'personal', 'feViewable'=>true, 'feEditable'=>true, 'mandatory'=>false, 'tl_class'=>'w50', 'includeBlankOption'=>true, 'chosen'=>true),
    'sql' => "varchar(5) NOT NULL default ''"
    );

    Da es sich natürlich mehr Spieler als unter options aufgelistet gibt, würde ich dafür gerne eine Referenz bzw. eine eigene Tabelle anlegen. Z.B. 'options' => System::getfav_player(), oder so
    Ist mir leider bisher nicht gelungen.
    Kann mir jemand dabei helfen bzw. sagen wo ich am besten ansetze ?
    Vielen Dank

    Gruss Marc

  13. #13
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    für eine Tabelle als Optionen nimm
    PHP-Code:
    'foreignKey' => 'tl_tabelle.feld' 

  14. #14
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    Zitat Zitat von magicsepp Beitrag anzeigen
    für eine Tabelle als Optionen nimm
    PHP-Code:
    'foreignKey' => 'tl_tabelle.feld' 
    Danke für deine Antwort !

    Aber könntest du etwas genauer werden. Kann mit deinen Post leider nicht wirklich was anfangen. Bin kein Entwickler.....hab mir meine beschränkten Fähigkeiten selbst beigebracht.

    sorry

    Gruss marc

  15. #15
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    so sieht der Optionseintrag aus wenn die Optionen aus der tl_table kommen sollen, alos anstelle von 'options' => array('','57 - Ronny Arendt','14 - Steve Wagner'),

  16. #16
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    Zitat Zitat von magicsepp Beitrag anzeigen
    so sieht der Optionseintrag aus wenn die Optionen aus der tl_table kommen sollen, alos anstelle von 'options' => array('','57 - Ronny Arendt','14 - Steve Wagner'),
    super danke !! funktioniert bestens

    kann ich so auch mehrere Felde anzeigen ? also zb.

    'foreignKey'=> ('tl_playerlist.number','tl_playerlist.firstname') ,

    also das geht schon mal nicht hab ich gerade probiert .....

    aber ein feld geht!
    __________________________________________________ __________________________________________________ _____
    Nachtrag:
    ok bin etwas schlauer

    mit :
    'foreignKey'=> "tl_playerlist.CONCAT(number,' - ',firstname,' ',lastname)",

    bekomme ich als drop down Auswahl das was ich möchte
    in der mitglieder Tabelle wird aber nur die id des spielers gespeichert
    was auf der Mitgliederliste bewirkt z.B. : Favorisierter Spieler = 4

    also komm ich damit auch nicht weiter .....es ist zum haare raufen .... :-(
    Geändert von Mave2104 (28.07.2014 um 14:51 Uhr)

  17. #17
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    Bin ich mit foreignKey unter Umständen kompl. auf dem Holzweg für mein vorhaben ?

    Oder muss ich zuerst ein Feld /z.b. tl_playerlist.zusammengefasst in der Tabelle erzeugen was sich aus number firstname lastname zusammensetzt ,
    um dann mit 'foreignKey'=> 'tl_playerlist.zusammengefasst sowohl als select anzeige als auch als Tabelleneintrag in der 2. Tabelle darauf zugreifen zu können ?

    mit dem oben genannten Eintrag bekomm ich ja leider nur die select anzeige richtig hin
    Geändert von Mave2104 (28.07.2014 um 16:08 Uhr)

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

    Support Contao

    Standard

    du speicherst an einem Member die ID eines FavPlayer, richtig?

    und welche Tabelle gibts du dann aus?

    Die Member oder die FavPlayer?

    Gruß, Cliff

  19. #19
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    du speicherst an einem Member die ID eines FavPlayer, richtig?
    -------------------------


    ja aber genau das ist das Problem .....ich bräuchte dort nicht die id sondern einen zusammensetzung aus den anderen feldern nicht id sondern firstname&lastname&number




    und welche Tabelle gibts du dann aus?

    Die Member oder die FavPlayer?
    -------------------------------

    der favplayer ist ja nur ein feld in der meberlist welches aus einen externen tabelle (playerlist) über select foreignKey geholt bzw. ausgewählt werden kann


    Vielleicht erkläre ich besser nochmal zum nachvollziehen:

    ich benutze die meberlist als Erweiterung, welche ich um einige Felder erweitert habe (ohne xtmemberlist). Eines der Felder ist ein input select feld welches mit foreignkey (bin mir nicht sicher ob das so der beste weg ist) aus einer 2. Tabelle mehre daten abholen / zu Verfügung stellen soll.

    Die 2 Tabelle kommt von einem eigenen Modul (Spielerliste) mit den Feldern Nr. + Vorname + Nachname + Spitzname usw. (erweiterbar)

    Nun sollen die mitglieder aus diese tabelle einen Favorisierten spieler wählen können .....

    das funktioniert soweit auch bis auf die Tatsache das in die memberlist nur die id des spieler ais tabelle 2 eingetragen wird.

    In der meberlist wird dann leider nur favorisierter Spieler = id ausgegeben. Eigentlich sollte da eine Kombination aus nr vorname nachname hin.

    Hoffe das war ein wenig verständlicher

    aber schon einmal danke für deine Mühen ;-)

    Gruss Marc
    Geändert von Mave2104 (28.07.2014 um 16:40 Uhr)

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

    Support Contao

    Standard

    puh, verwirrend

    mir ist das alles nicht ganz klar

    im Grunde soll man an einem Mitglied ein anderes Mitglied auswählen, korrekt?
    die ID diese Mitglieds landet dann in dem Feld 'fav_player'.

    Das willst dann im Frontend auswerten, d.h in der Tabelle soll die Daten den Mitglieds stehen.

    Bleibt die Frage, mit welchen Frontend-Modul diese Tabelle erzeugst?
    Mit [memberlist], oder selbst ???

    Gruß, Cliff

  21. #21
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    Zitat Zitat von cliffen Beitrag anzeigen
    puh, verwirrend

    Bleibt die Frage, mit welchen Frontend-Modul diese Tabelle erzeugst?
    Mit [memberlist], oder selbst ???

    Gruß, Cliff

    eigentlich nur die memberlist

    Die Spielerliste hat hier eigens Frontendmodul und Template (hat aber mit den mitgliedern nichts zu tun)

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

    Support Contao

    Standard

    Hmm, also dann würde ich sagen installiere mal die Erweiterung [ExtendedMemberInserttags]

    Dann beiarbeite das Temlate der Memberlist und in der Splalte wo dieses FavFeld kommt nutzt du den Inserttag

    PHP-Code:
    {{member::ID::name}} 
    Für den Stern dann den Wert aus dem Feld einsetzen und statt Name halt Attribute nutzen, wie du magst.

    Gruß, Cliff

  23. #23
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    Zitat Zitat von cliffen Beitrag anzeigen
    Hmm, also dann würde ich sagen installiere mal die Erweiterung [ExtendedMemberInserttags]

    Dann beiarbeite das Temlate der Memberlist und in der Splalte wo dieses FavFeld kommt nutzt du den Inserttag

    PHP-Code:
    {{member::ID::name}} 
    Für den Stern dann den Wert aus dem Feld einsetzen und statt Name halt Attribute nutzen, wie du magst.

    Gruß, Cliff

    danke dir !!!
    werde ich heute Abend gleich mal versuchen

    aber wir haben nicht aneinander vorbei gesprochen ? Das Feld fav_player ist bereist in der tl_member nur der wert wird aus der tl_playerlist geholt ! ich möchte lediglich den wert (ID) nicht in dem feld fav_player ....sondern aus der tl_playerlist die werte aus number firstname lastname in die tl_member feld fav_player sprich drei Felder in ein Feld ?!

    Danke

    Danke Gruss Marc

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

    Support Contao

    Standard

    Naja, der Foreign Key (also die Id in tl_member ist schon sauberer, wenn man das ändern will, oder der Name der Person sich ändert).

    Du könntest gemäß [ExtendedMemberInserttags] einen eigenen Inserttag anlegen, der die Werte aus tl_playerlist rausholt ...

    Oder ein eigenes Modul, welches die liste erstellt und mit sauberem SQL die Tabellen per JOIN zusammeführt.

    Also, ein bissel aneinander vorbei haben wir wohl geredet

    Gruß, Cliff

  25. #25
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    :-D

    ja haben wir wohl ;-)

    aber dein Anstoß hilft mir, denk da werde ich ansetzten. Muss mir nur noch ein wenig know-how aneignen ;-)

    Danke Dir

  26. #26
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    Hey Cliff hab noch ein wenig im Forum gestöbert ....wäre nicht DCA field mapping die lösung für mein Problem ?

    Hab nur keine Ahnung wie ich das hier ergänzt bekomme

    Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['fav_player'] = array
    (
        'label'     => &$GLOBALS['TL_LANG']['tl_member']['fav_player'],
        'exclude'   => true,
        'filter'    => true,
    	'inputType' => 'select',
        'foreignKey'=> 'tl_playerlist.(CONCAT(number," - ",firstname," ",lastname))',
    	'eval'      => array('feGroup'=>'personal', 'feViewable'=>true, 'feEditable'=>true, 'mandatory'=>false, 'tl_class'=>'w50', 'includeBlankOption'=>true, 'chosen'=>true),
        'sql'       => "varchar(20) NOT NULL default ''"

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

    Support Contao

    Standard

    hmm, entspricht doch dem aus Post #16, oder?

  28. #28
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    Zitat Zitat von cliffen Beitrag anzeigen
    hmm, entspricht doch dem aus Post #16, oder?
    ja genau .....
    versteh ich das richtig das ich da den labeleintrag ersetzen muss ?

    oder ist der ansatz generell falsch ?

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

    Support Contao

    Standard

    das was du mit foreignKey machst gilt erstmal ausschloießlich für das Backend ... das was du dahinter angibst ist dann immer das Label ( in dem Fall die Option des Select ) ...

    der Value ist aber immer die ID des Datensatzes ... das geht automatisch so.

    ich glaub, nu kapiere ich auch, was du willst .... und wie du es machen kannst

    du musst in deiner dca/tl_member.php einen options_callback für das Feld 'fav_player' implementieren.

    Dort gibst du dann ein Array in dem Keys und Values deinem Wunschlabel entsprechen zurück.

    Dann wird dein gewünschter Name direkt in dem Feld gespiechert.

    Beispiele findest du in der tl_page.php:

    am Feld: https://github.com/contao/core/blob/..._page.php#L468
    Implementierung: https://github.com/contao/core/blob/...page.php#L1241

    Gruß, cliff

  30. #30
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    Zitat Zitat von cliffen Beitrag anzeigen
    das was du mit foreignKey machst gilt erstmal ausschloießlich für das Backend ... das was du dahinter angibst ist dann immer das Label ( in dem Fall die Option des Select ) ...

    der Value ist aber immer die ID des Datensatzes ... das geht automatisch so.

    ich glaub, nu kapiere ich auch, was du willst .... und wie du es machen kannst

    du musst in deiner dca/tl_member.php einen options_callback für das Feld 'fav_player' implementieren.

    Dort gibst du dann ein Array in dem Keys und Values deinem Wunschlabel entsprechen zurück.

    Dann wird dein gewünschter Name direkt in dem Feld gespiechert.

    Beispiele findest du in der tl_page.php:

    am Feld: https://github.com/contao/core/blob/..._page.php#L468
    Implementierung: https://github.com/contao/core/blob/...page.php#L1241

    Gruß, cliff
    jaaaaa genau das meint ich
    sorry mir fehlen einfach die Fachbegriffe

    gut gebe zu bewege mich hier auf völligem Neuland.....aber nur Übung macht den meister

  31. #31
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    Code:
    <?php
    // Anpassung der Palette
    
    
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace('login;', 'login;{xtra_legend:hide},member_since,fav_player;', $GLOBALS['TL_DCA']['tl_member']['palettes']['default']);
    
     
    // Hinzufügen der Feld-Konfiguration
    $GLOBALS['TL_DCA']['tl_member']['fields']['member_since'] = array
    (
        'label'     => &$GLOBALS['TL_LANG']['tl_member']['member_since'],
        'exclude'   => true,
        'inputType' => 'text',
        'eval'      => array('feGroup'=>'personal', 'feViewable'=>true, 'feEditable'=>false, 'mandatory'=>false, 'rgxp'=>'date', 'datepicker'=>true),
        'sql'       => "varchar(11) NOT NULL default ''"
    );
    
    $GLOBALS['TL_DCA']['tl_member']['fields']['fav_player'] = array
    (
            'label'     			=> &$GLOBALS['TL_LANG']['tl_member']['fav_player'],
            'exclude'   			=> true,
            'filter'    			=> true,
    	'inputType' 			=> 'select',
            'foreignKey'			=> 'tl_playerlist.id',
    	'options_callback'      => array('tl_Players', 'getPlayers'),
    	'eval'      			=> array('feGroup'=>'personal', 'feViewable'=>true, 'feEditable'=>true, 'mandatory'=>false, 'tl_class'=>'w50', 'includeBlankOption'=>true, 'chosen'=>true),
            'sql'       			=> "varchar(32) NOT NULL default ''"
    );
    
    
    
    // Felder zum Pflichtfeld machen
    
    
    
    // Felder öffentlich verbergen
    
    
    $GLOBALS['TL_DCA']['tl_member']['fields']['language']['eval']['feViewable'] = false;
    $GLOBALS['TL_DCA']['tl_member']['fields']['language']['eval']['feEditable'] = false;
    
    // Global entfernen von Felder 
    
    unset($GLOBALS['TL_DCA']['tl_member']['fields']['gender']); 
     
    unset($GLOBALS['TL_DCA']['tl_member']['fields']['company']); 
    unset($GLOBALS['TL_DCA']['tl_member']['fields']['website']);   
    unset($GLOBALS['TL_DCA']['tl_member']['fields']['state']);   
    unset($GLOBALS['TL_DCA']['tl_member']['fields']['fax']);  
    
    
    
    
    // Class Erweiterung
    class tl_Players extends tl_member
    {
    	public function getPlayers()
    	{
    		$return = array();
    
    		
    		
    		return $return;
    	}
    }
    Hab jetzt meine Modifizierung in ein neues modul gepackt und im ordner dca abgelegt und die datei tl.member.php so aufgebaut.
    So weit so gut. Oder nicht ?
    Nur bei der class erweiterung häng ich fest und komm nicht weiter :-(

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

    Support Contao

    Standard

    nun mit Database die Tabelle tl_player auslesen und das array wie gewünscht zusammen bauen

    sieht doch alles schon gut aus ...

    Zum testen kannst ja auch erstmal ein paar Werte hart reinschreiben.

    Gruß, Cliff

  33. #33
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    so wieder ein stück weiter ....leider nicht mit dem gewünschten Ergebnis :-(

    Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['fav_player'] = array
    (
        'label'     			=> &$GLOBALS['TL_LANG']['tl_member']['fav_player'],
        'exclude'   			=> true,
        'filter'    			=> true,
    	'inputType' 			=> 'select',
        'foreignKey'			=> 'tl_playerlist.id',
    	'options_callback'      => array('tl_playerlist', 'getplayers'),
    	'eval'      			=> array('feGroup'=>'personal', 'feViewable'=>true, 'feEditable'=>true, 'mandatory'=>false, 'tl_class'=>'w50', 'includeBlankOption'=>true, 'chosen'=>true),
        'sql'       			=> "varchar(32) NOT NULL default ''"
    );
    
    	// Class Erweiterung
    class tl_playerlist extends tl_member
    {
    	public function getPlayers() 
        { 
            $players = array(); 
            	  
            $objplayers = $this->Database->prepare("SELECT id,number,firstname,lastname 
                                                    FROM tl_playerlist 
                                                    ORDER by number, firstname, lastname") 
                                          ->execute(); 
            while ($objplayers->next()) 
            { 
                $k = $objplayers->id; 
                $v = $objplayers->number; 
     
                if($objplayers->firstname) 
                { 
                    $v .= ' '.$objplayers->firstname; 
                }
     
                if($objplayers->lastname) 
                { 
                    $v .= ' '.$objplayers->lastname; 
                } 
     
                $players[$k] =$v; 
            } 
     
            return $players; 
        }
    }


    bringt mich leider nur zu dem selben Ergebnis wie mein vorangegangener code alleine :-(


    Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['fav_player'] = array
    (
        'label'     => &$GLOBALS['TL_LANG']['tl_member']['fav_player'],
        'exclude'   => true,
        'filter'    => true,
    	'inputType' => 'select',
        'foreignKey'=> 'tl_playerlist.(CONCAT(number," - ",firstname," ",lastname))',
    	'eval'      => array('feGroup'=>'personal', 'feViewable'=>true, 'feEditable'=>true, 'mandatory'=>false, 'tl_class'=>'w50', 'includeBlankOption'=>true, 'chosen'=>true),
        'sql'       => "varchar(20) NOT NULL default ''"
    in der fav_player wird immer noch nur die id gespeichert ....was in der Memberlist Ausgabe wieder zu favorisierter Spieler = 4 führt
    Geändert von Mave2104 (29.07.2014 um 22:10 Uhr)

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

    Support Contao

    Standard

    ja, klaro, "$k" ist die ID des Players ... und die willst ja nicht haben

    So wie das Array aufgebaut ist, werden auch die Options aufgebaut ... musst also den Name auch als Key verwendet

    statt "$k" auch "$v" beim Einfügen in das Array nutzen:

    PHP-Code:
    $players[$v] =$v
    Gruß, Cliff

  35. #35
    Contao-Nutzer Avatar von Mave2104
    Registriert seit
    04.05.2014.
    Ort
    Mannheim
    Beiträge
    28

    Standard

    JA JA JA JA JA !!!!!!!!!!!!!!!!!!!!!!!!!

    DANKE DANKE DANKE

    endlich

    es funktioniert wies soll :-D

    vielen vielen dank

    Gruss Marc

    Hab gesehen du bist genauso ein treki wie ich .....
    werde dir bei Gelegenheit als kleine Anerkennung nen netten treki Gruss vorbeischicken

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

    Support Contao

    Daumen hoch

    Super

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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