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

ComplexTableField Datum richtig ausgeben

Seite: 1 1173 mal gelesen
  • Digga
    Digga Community Member
    11 Beiträge

    ComplexTableField Datum richtig ausgeben

    Hallo,

    ich habe folgendes Problem:
    Ich möchte eine Terminliste mit einem ComplexTableField ausgeben. In einer Spalte soll ein Datum ausgegeben werden, aber statt im dd.mm.yyyy Format erhalte ich die Daten im SQL-Format yyyy-mm-dd.

    Jetzt wollte ich die Spalte neu formatieren mit folgendem Aufbau:


       function getCMSFields() {
          $fields = parent::getCMSFields();
          $TerminTable = new ComplexTableField(
             $this,
             'Termine',
             'Termin',
             $fieldList = array('Datum'=>'Datum','Start'=>'Start','Ende'=>'Ende','Treffpunkt'=>'Treffpunkt','Beschreibung'=>'Beschreibung'),
             null,
             null
          );
          $DatumSQL = date('d.m.Y',strtotime(--????--));
          $TerminTable->setFieldFormatting(array('Datum' => $DatumSQL));
    ......


    So funktioniert es aber nicht. Jetzt steht in jeder Zeile 01.01.1970. Es wird scheinbar kein Datum übergeben.

    Ich weiß aber nicht, wie ich an das Datum jeder einzelnen Zeile komme?
    Vielleicht gibt es aber auch eine bessere Lösung für dieses Problem. Das Datum könnte ja auch im SQL Format stehen bleiben, aber es ist doch ungewohnt das Datum so zu lesen.

    Gruß Björn

  • Tobias

    131 Beiträge

    Re: ComplexTableField Datum richtig ausgeben

    Hi Björn,

    geht es um die Ausgabe im Frontend? Dann kannst Du die Daten normal in der DB mit '-' speichern und die Ausgabe dann über $Date.format(d.m.Y) ($Date musst Du mit Deinen Datumsvariablen ersetzen) in der .ss-Datei realisieren.

    Tobias

    Tobias, Forum-Team

  • Digga
    Digga Community Member
    11 Beiträge

    Re: ComplexTableField Datum richtig ausgeben

    Hallo Tobias

    Es geht leider nicht um das Frontend sondern um das Backend.
    Mittlerweile sind auch noch andere Probleme dazugekommen mit denen ich nicht zurechtkomme:

    - Die Uhrzeit wird so ausgegeben hh:mm:ss ich will aber nur die Stunden und Minuten anzeigen.

    - Im Popup-Fenster soll mir für die Beschreibung des Termins ein SimpleHtmlEditorField angezeigt werden.
    Es wird auch ein Feld angezeigt aber ohne Steuerelemente. Ein normales HtmlEditorField funktioniert ja scheinbar nicht so wie ich herauslesen konnte und habe deshalb das DataObjectManager Modul installiert.

    Vielleicht gibt es ja für das eine oder andere Problem eine Lösung.

    Vielen Dank
    Björn
  • Izeroy
    Community Member
    211 Beiträge

    Re: ComplexTableField Datum richtig ausgeben

    Hallo Björn,
    ich hoffe ich kann dir hiermit weiterhelfen:


    function getCMSFields() {

    $fields = parent::getCMSFields();

    $TerminTable = new ComplexTableField(

    $this,

    'Termine',

    'Termin',

    $fieldList = array('Datum'=>'Datum','Start'=>'Start','Ende'=>'Ende','Treffpunkt'=>'Treffpunkt','Beschreibung'=>'Beschreibung'),

    null,

    null

    );

    $DatumSQL = date('d.m.Y',strtotime(--????--));

    $TerminTable->setFieldFormatting(array('Datum' => $DatumSQL'$FormatiertesDatum'));

    ......



    Zusätzlich setzt du in deine Termin.php folgende Funktion


    class Termin extends DataObject {

    ...
    function getFormatiertesDatum() {
          $d = explode("-",$this->Datum);
          $time = explode(' ', $this->Datum);
          return sprintf("%02d.%02d.%04d", $d[2], $d[1], $d[0]).' '.substr($time[1],0,5);
       }
    ...
    }

    Ich denke dies wird dein erstes Problem lösen.

    Ist jetzt die einfachste Möglichkeit, die ich sehe.

    Zu deinem anderen Problem bzgl. SimpleHTMLEditorField

    Im DataObjectManager gibt es ein Problem mit dem SimpleHTMLEditorField, du müsstest also die Datei SimpleHTMLEditorField.php abändern.

    Und zwar musst du die Funktion FieldHolder mit dieser ersetzen:

    public function FieldHolder()
    {
    Requirements::javascript('sapphire/thirdparty/jquery/jquery-packed.js'); // load jquery framework for following scripts to run
    Requirements::javascript('dataobject_manager/javascript/jquery.wysiwyg.js');
    Requirements::css('dataobject_manager/css/jquery.wysiwyg.css');
    Requirements::customScript("
    // use 'jQuery' call instead of '$' to prevent problems with prototype framework
    jQuery(function() {
    jQuery('#{$this->id()}').wysiwyg({
    {$this->getConfig()}
    }).parents('.simplehtmleditor').removeClass('hidden');

    });
    ");
    return parent::FieldHolder();
    }


    Ich hoffe, dass war der Fehler, solltest du weiterhin Probleme mit dem SimpleHTMLEditorField haben, bitte kurze Rückmeldung, dann suchen wir weiter nach dem Fehler.

    Greetz
    Ben

    Weitere Fragen?! Meld dich einfach! MSN: benjamin.buessenschuett@hotmail.de ICQ: 354 848 193 Webseite: www.silverstripe-hilfe.de

  • Tobias

    131 Beiträge

    Re: ComplexTableField Datum richtig ausgeben

    Hi Björn,

    zum Datum noch einmal. Ab SS 2.4 kann man das Ausgabeformat von Datum und Uhrzeit bei jedem Benutzer im Backend festlegen. Dazu Benutzer bearbeiten, Format auswählen (oder eigenes definieren), und Benutzer speichern.
    Ich habe leider noch keine 2.4 Installation, in der ich auf Datumsfelder zugreife, deshalb kann ich auch nicht sagen, ob Dir das hilft.

    Tobias

    Tobias, Forum-Team

  • Digga
    Digga Community Member
    11 Beiträge

    Re: ComplexTableField Datum richtig ausgeben

    Hallo Ben

    Ich habe die SimpleHTMLEditorField.php Datei geändert, aber im PopUp Fenster ist der Editor trotzdem nicht zu sehen. Irgendetwas mache ich noch falsch. Im Quelltext kann man aber sehen das ein SimpleHTMLEditorField eingesetzt wird.
    So rufe ich den Editor auf:

    new SimpleHTMLEditorField( 'Beschreibung', 'Beschreibung eingeben (HTML Text)',array(),5)


    Gruß Björn
  • Digga
    Digga Community Member
    11 Beiträge

    Re: ComplexTableField Datum richtig ausgeben

    Hallo,

    mein Problem mit dem dataobjectmanager hat sich noch erweitert. Nach meinen ganzen Tests wollte ich das System und die Datenbank in den Ursprungs zustand versetzen und habe alles neu aufgespiel, erst Silverstripe, Datenbank initialisiert, dann die Module. Sobald ich aber das DOM Modul installiere und in Silverstripe auf Dateien und Ordner gehe, wird mir rechts im Eigenschaften Fenster alles scheinbar ohne CSS Formatierung ausgegeben. Um das Problem erstmal schnell zu lösen habe ich DOM und SimpleHTMLEditor weggelassen.
    Ich würde es aber gerne nutzen, weiß aber nicht wie ich das Problem lösen kann.
    Wenn ich jetzt meine Daten im Frontend ausgebe wird aber nur ein Zeilenumbruch eingefügt und nicht <br />.
    Gibt es die Möglichkeit mit nl2br oder mit preg_replace die Zeilenumbrüche in <br /> umzuwandeln?
    Im ComplexTableField wird natürlich auch nur ein Zeilenumbruch eingefügt. Auch hier wäre ein anderes Format hilfreich.
    Ich raufe mir schon die paar Haare die ich noch habe, aber jeder Ansatz misslingt auch schon beim ersten Versuch.
    Vielleicht gibt es ja auch einen .format() Befehl. Über Google gebe ich scheinbar die falschen Begriffe ein oder suche nach der falschen Sache.

    Gruß Björn

    Ein Hilfe wäre echt gut.

Zur Zeit online: Zur Zeit ist leider niemand online.

Wir begrüßen unsere neuen Mitglieder: saerdna