135 Nachrichten unter 47 Themen von 48 Mitgliedern
[SilverStripe Roadmap][Changelog]

Member Class erweitern,. Reihenfolge der Felder in BE-View ändern

Seite: 1 1025 mal gelesen
  • Lukin
    Lukin Community Member
    60 Beiträge

    Member Class erweitern,. Reihenfolge der Felder in BE-View ändern

    HI,

    ich habe folgende Decorator geschrieben, der die Member-Tabelle um zwei Felder erweitert.

    class MemberDecorator extends DataObjectDecorator {    
       function augmentSQL(SQLQuery &$query) {}   // Funktioniert auch ohne hab ich bemerkt,... was macht diese Funktion eigentlich?
       public function extraStatics(){      
          return array(
             'db' => array(
                "Firma" => "Varchar",
                'Telefon' => 'Varchar',
             ),
             'has_one' => array(
             ),
          );
       }
    }

    der Vollstädigkeit halber:
    in der config.php regestriere ich diese extension der Member-Klasse folgendermaßen:

    Object::add_extension('Member', 'MemberDecorator');



    funktioniet alles gut. Allerdings werden die Felder, bei Anzeige im Backend (Security/Securtiy Groups/Members/Auswahl) in der Reihenfolge dargestellt, wie sie sich in der DB befinden. Da meine extensions am Ende der Tabelle stehen laufen sie auch im View am Ende auf. Ich würde das Ganze gerne nach meinen Wünschen umsortieren...

    Somebody some help ?

    Danke schonmal

    Grüße,
    Lukin
  • brokemeister
    brokemeister Community Member
    76 Beiträge

    Re: Member Class erweitern,. Reihenfolge der Felder in BE-View ändern

    Hallo Lokin,

    du kannst in deinem Decorator folgendes benutzen:


    function updateCMSFields(FieldSet&$fields) {
    $fields->push(new TextField('Firma', Firma)); //Beispiel
    }


    Aber eigentlich steht alles in der Dokumention: http://doc.silverstripe.org/dataobjectdecorator

    Du musst dir lediglich mal die Funktionen vom FieldSet anschauen, welche für die in Frage kommen...

    Gruß

    Malte

    EOS Uptrade GmbH - Komplexes einfach machen | Certified Silverstripe Partner | www.eos-uptrade.de

  • Lukin
    Lukin Community Member
    60 Beiträge

    Re: Member Class erweitern,. Reihenfolge der Felder in BE-View ändern

    hi Malte

    also, die Felder werden ja schon gespeichert und auch ausgegeben...

    Du gehst ja im BackEnd auf einen User, klickst ihn an und dann geht das schöne PopUp-Fenster mit den USer-spezifischen Daten auf. Folgende Tabs sind vorhanden (Main,Groups,Permission).

    Im Tab Main zeigt er die Daten aus der Tabelle Member an. Diese hab ich ja erweitert und in diesem Tab werden auch meine neuen Felder angezeigt. Nur stehen Sie ganz unten und nicht hinter FirstName, Surame, Email,... Da sollen Sie hin.
    Meine FRage ist ja nun, ob ich den Felder des MAin Tabs eine Reihenfolge vorgeben kann, er also nicht die Reihenfolge der Felder in der DB nimmt sondern ein vordefiniert von mir....

    Nebenbei: Wenn ich über updateCMSFields gehe zeigt er mir die Felder zwar im Popup aber unterhalb der Tabs an. Sie sind immer zu sehen, egal in welchem Tab ich bin.


    Grad kommt mir, die Felder einfach über PHPAdmin an der richigen Stelle der Tabelle anzulegen, dass dürfte wahrscheinlich auch funzen. läuft ja scheinbar alles über die assoziative Geschichte
  • Lukin
    Lukin Community Member
    60 Beiträge

    Re: Member Class erweitern,. Reihenfolge der Felder in BE-View ändern

    also mit Felder manuell anlegen ging s nicht. Ich habe den neuen Felder jetz ohne extension direkt in die Member funktion reingehackt,....


    class Member extends DataObject {

       static $db = array(
          'FirstName' => 'Varchar',
          'Surname' => 'Varchar',
          'Firma' => 'Varchar(150)',
          'Telefon' => 'Varchar(25)',
          'Email' => 'Varchar',


    dit tut's; Reihenfolge wie gewünscht,..

  • brokemeister
    brokemeister Community Member
    76 Beiträge

    Re: Member Class erweitern,. Reihenfolge der Felder in BE-View ändern

    Hallo Lukin,

    das was du machst ist ein "NoGo".
    Viele Kunden sind schon zu uns gekommen, die einfach verkorkste Seiten haben. Weil eine Agentur einfach nur was rein gehackt hat und beim Update nichts mehr lief...

    Schau dir mal die Funktionen aus dem FieldSet (z.B. addFieldToTab(...)) an. Da kannst du die Reihenfolge auch entsprechend definieren...

    Gruß

    Malte

    EOS Uptrade GmbH - Komplexes einfach machen | Certified Silverstripe Partner | www.eos-uptrade.de

  • Lukin
    Lukin Community Member
    60 Beiträge

    Re: Member Class erweitern,. Reihenfolge der Felder in BE-View ändern

    HI Malte,

    ok , mach ik. Ich will s ja nach Möglichkeit schon richtig machen;)

    Danke für den Hinweis

    Grüße
  • Lukin
    Lukin Community Member
    60 Beiträge

    Re: Member Class erweitern,. Reihenfolge der Felder in BE-View ändern

    bueno so funktioniert's:



    class MemberDecorator extends DataObjectDecorator {
       public function extraStatics(){      
          return array(
             'db' => array(
                "Firma" => "Varchar(255)",
                'Telefon' => 'Varchar',
             ),
             'has_one' => array(
             ),
          );
       }
       public function updateCMSFields(FieldSet &$fields) {      
          $fields->addFieldToTab('Root.Main',new TextField('Firma',_t('Member.FIRMA')), 'MemberUserDetailsHeader');
          $fields->addFieldToTab('Root.Main',new TextField('Telefon',_t('Member.TELEFON')), 'Email');
          return $fields;
       }
       
    }


    bisl merwürdig ist, dass er sobald ich den aktuellen Benutzer auf CMS Sprach=deutsch setzte, er den Tab Members zwar in Mitglieder übersetz, aber zusätzlich noch einen leeren Tab names Members erstellt,....
    läuft in dem Thread: http://www.silverstripes.de/erweitern-formulare/show/1678?start=8

Zur Zeit online: Zur Zeit ist leider niemand online.

Wir begrüßen unsere neuen Mitglieder: saerdna