Ergebnis 1 bis 8 von 8

Thema: Feld in Events hinzufügen

  1. #1
    Contao-Nutzer Avatar von DetlefT
    Registriert seit
    25.07.2014.
    Ort
    Bedburg
    Beiträge
    104

    Standard Feld in Events hinzufügen

    Hallo,

    der Vortrag von https://www.youtube.com/watch?v=INMvcXO4rtQ bzw. http://vortraege.bytepuzzle.de/ck201...ao-extended/#/ enthält haargenau das, was ich benötige: bei den Events ein Feld hinzufügen (location_course_mail) und das später in ein Buchungs-Formular übernehmen. Also mein erster DCA-Versuch: ich habe seine Vorlagen angepasst und getreu seiner Vorgaben abgelegt in php-Datein mit der Kodierung UTF8 ohne BOM:
    Code:
    // Feldposition
    $GLOBALS['TL_DCA']['tl_calendar_events']['palettes']['default'] = str_replace(
        'location',
        'location, location_course_mail',
        $GLOBALS['TL_DCA']['tl_calendar_events']['palettes']['default']);
    // Feldkonfiguration
    $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['location_course_mail'] = array
    (
    'label'		=> &$GLOBALS['TL_LANG']['tl_calendar_events']['location_course_mail'],
    'exclude'	=> true,
    'search'	=> true,
    'inputType'	=> 'text',
    'eval'		=> array('rgxp'=>'email', 'maxlength'=>255, 'decodeEntities'=>true, 'tl_class'=>'w50'),
    'sql'		=> "varchar(255) NOT NULL default ''"
    );
    und
    Code:
    // Feldbezeichnungen
    $GLOBALS['TL_LANG']['tl_calendar_events']['location_course_mail']['0']  = "E-Mail Seminaranbieter";
    $GLOBALS['TL_LANG']['tl_calendar_events']['location_course_mail']['1']  = "E-Mail Adresse des Seminaranbieters";
    Dazu das gleiche in englisch.
    Beim Aufruf des Install-Tools kommt folgende Fehlermeldung:
    Code:
    // Feldposition $GLOBALS['TL_DCA']['tl_calendar_events']['palettes']['default'] = str_replace( 'location', 'location, location_course_mail', $GLOBALS['TL_DCA']['tl_calendar_events']['palettes']['default']); // Feldkonfiguration $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['location_course_mail'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_calendar_events']['location_course_mail'], 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => array('rgxp'=>'email', 'maxlength'=>255, 'decodeEntities'=>true, 'tl_class'=>'w50'), 'sql' => "varchar(255) NOT NULL default ''" );
    Warning: Cannot modify header information - headers already sent by (output started at /var/www/web22375887/html/parimal/system/modules/calendar_seminar/dca/tl_calendar_events.php:1) in system/modules/core/library/Contao/Template.php on line 294
    
    #0 [internal function]: __error(2, 'Cannot modify h...', '/var/www/web223...', 294, Array)
    #1 system/modules/core/library/Contao/Template.php(294): header('Vary: User-Agen...', false)
    #2 system/modules/core/classes/BackendTemplate.php(120): Contao\Template->output()
    #3 system/modules/core/controllers/BackendInstall.php(882): Contao\BackendTemplate->output()
    #4 system/modules/core/controllers/BackendInstall.php(204): Contao\BackendInstall->outputAndExit()
    #5 contao/install.php(20): Contao\BackendInstall->run()
    #6 {main}
    
    
    Warning: Cannot modify header information - headers already sent by (output started at /var/www/web22375887/html/parimal/system/modules/calendar_seminar/dca/tl_calendar_events.php:1) in system/modules/core/library/Contao/Template.php on line 295
    
    #0 [internal function]: __error(2, 'Cannot modify h...', '/var/www/web223...', 295, Array)
    #1 system/modules/core/library/Contao/Template.php(295): header('Content-Type: t...')
    #2 system/modules/core/classes/BackendTemplate.php(120): Contao\Template->output()
    #3 system/modules/core/controllers/BackendInstall.php(882): Contao\BackendTemplate->output()
    #4 system/modules/core/controllers/BackendInstall.php(204): Contao\BackendInstall->outputAndExit()
    #5 contao/install.php(20): Contao\BackendInstall->run()
    #6 {main}
    Im Backend ist das Eingabefeld dann vorhanden, allerdings führt eine Dateneingabe zu einem Query-Error (finde das Feld auch nicht in der Datenbank):
    Event-Fehler.gif
    Von früheren Gehversuchen mit einem php-Forum kenne ich den Fehler von Leerzeichen, die vor einer php-Funktion stehen. Aber hier finde ich den Fehler einfach nicht.

    Any suggestions?

    Und dann noch eine Schönheitsfrage: Das Feld Veranstaltungsort hätte ich gerne auch nur über die halbe Breite. Dazu müsste ich wohl dem Feld die Klasse "w50" zuweisen. Aber wie mache ich das updatesicher?"
    Geändert von DetlefT (20.05.2017 um 14:37 Uhr)
    Viele Grüße, DetlefT

  2. #2
    Contao-Nutzer Avatar von DetlefT
    Registriert seit
    25.07.2014.
    Ort
    Bedburg
    Beiträge
    104

    Standard

    Oh Mann, wie peinlich! Natürlich muss in allen PHP-Dateien am Anfang ein "<?php" und zum Schluss (kann) ein "?>" hin.

    Kaum macht man es richtig, schon funktioniert es!

    Bleibt Frage 2:
    Und dann noch eine Schönheitsfrage: Das Feld Veranstaltungsort hätte ich gerne auch nur über die halbe Breite. Dazu müsste ich wohl dem Feld die Klasse "w50" zuweisen. Aber wie mache ich das updatesicher?"
    Viele Grüße, DetlefT

  3. #3
    Alter Contao-Hase
    Registriert seit
    20.03.2010.
    Ort
    Hannover
    Beiträge
    1.041

    Standard

    In Deinem Codebeispiel oben hattest Du bereits die Lösuing mit drin:

    PHP-Code:
    'eval'        => array('rgxp'=>'email''maxlength'=>255'decodeEntities'=>true'tl_class'=>'w50'), 
    'tl_class'=>'w50' ist das was Du suchst.

    Alle Einträge in der dcaconfig oder über ein Modul sind updatesicher.

  4. #4
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Nachdem du das neue Feld deklariert hast, musst du im BE einmal auf DB-aktualisieren klicken, damit das Feld auch in die Tabelle eingefügt wird.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  5. #5
    Contao-Nutzer Avatar von DetlefT
    Registriert seit
    25.07.2014.
    Ort
    Bedburg
    Beiträge
    104

    Standard

    Also müsste ich in die dcaconfig.php eintragen:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['location'][eval] = array('tl_class'=>'w50'); 
    Richtig?

    Ein Beispiel mit einem String habe ich schon so ähnlich gesehen, aber noch keines mit einem Array.
    Geändert von DetlefT (21.05.2017 um 00:04 Uhr) Grund: Code-Wrapper zu PHP geändert.
    Viele Grüße, DetlefT

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Nein, damit würdest du dem eval ja nur dieses kleine Array zuordnen und in deinem eval soll ja noch viel mehr stehen. Oben hattest du es doch schon richtig gemacht.
    PHP-Code:
    'eval'        => array('rgxp'=>'email''maxlength'=>255'decodeEntities'=>true'tl_class'=>'w50'), 
    Wenn du nur tl_class setzen oder überschreiben wolltest (was du nicht brauchst, weil du es ja schon in deiner dcaconfig drin hast) würde das so gehen.
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['location']['eval']['tl_class'] = 'w50'
    ps Benutze bitte den PHP-Wrapper hier im Forum, dann würdest du auch sofort sehen, dass bei deinem eval die Anführungszeichen fehlen.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  7. #7
    Contao-Nutzer Avatar von DetlefT
    Registriert seit
    25.07.2014.
    Ort
    Bedburg
    Beiträge
    104

    Standard

    Oben in meinem Beispiel hatte ich ja ein neues Feld "location_course_mail" angelegt, da bin ich für Updates ja selbst verantwortlich. Bei meiner Frage ging es ja um die Änderung des core-Feldes "location". Bei Datenbankänderungen bin ich trotz vorherigem Backup immer etwas "ängstlich".

    Danke für die Antwort, Andreas, ausprobiert, klappt, wieder was gelernt.
    Viele Grüße, DetlefT

  8. #8
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ah, stimmt, ich hatte mich jetzt nur auf dein eigenes Feld konzentriert.

    DB: Wenn du ein neues Feld deklarierst, muss es natürlich auch in die DB. Dabei kann nix passieren. Contao sagt dir, dass dieses Feld in der DB fehlt, der Haken ist bereits automatisch von Contao gesetzt und beim Absenden wird es dann der Tabelle hinzugefügt.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

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
  •