Ergebnis 1 bis 3 von 3

Thema: [gelöst] DCA select ungültige Eingabe

  1. #1
    Contao-Nutzer
    Registriert seit
    06.08.2010.
    Beiträge
    72

    Frage [gelöst] DCA select ungültige Eingabe

    Hallo,
    ich sitze jetzt seit 2 Stunden an einem Problem und weiss einfach nicht mehr weiter. Ich möchte eine Auswahl an Kalenderwochen im Backend. Das funktioniert alles einwandfrei, nur beim Speichern bekomme ich die Meldung "Ungültige Eingabe: 1399926327".

    So sieht mein Script aus:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_news']['fields']['weekly_recipe'] = array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_news']['weekly_recipe'],
                
    'exclude'                 => true,
                
    'filter'                  => true,
                
    'sorting'                 => true,
                
    'flag'                    => 11,
                
    'inputType'               => 'select',
                
    'options_callback'        => array('tl_magazin_news''weeklyRecipe'),
                
    'eval'                    => array('chosen'=>true'tl_class'=>'w50'),
                
    'sql'                     => "int(10) unsigned NOT NULL default '0'",
    );

    class 
    tl_magazin_news extends tl_news{
            
        public function 
    weeklyRecipe(){
            
            
    $dt = new DateTime;
            
    $week[0] = "Nicht Rezept der Woche";
            
    $w $dt->setISODate(date('Y'), date('W')+10,1)->getTimestamp();
            
    $end $dt->setISODate(date('Y'), date('W')-20,1)->getTimestamp();
            
            while(
    $w $end){
                
    $week[$w] = "Woche " date('W',$w) . ", ab ".$this->parseDate('d. F Y',$w);
                
    $w $w - (60*60*24*7);
            }

            return 
    $week;
        } 
    So sieht der HTML Code aus:

    HTML-Code:
    <select name="weekly_recipe" id="ctrl_weekly_recipe" class="tl_select tl_chosen" onfocus="Backend.getScrollOffset()">
      <option value="0" selected>Nicht Rezept der Woche</option>
      <option value="1399926898">Woche 20, ab 12. Mai 2014</option>
      <option value="1399322098">Woche 19, ab 05. Mai 2014</option>
      <option value="1398717298">Woche 18, ab 28. April 2014</option>
      <option value="1398112498">Woche 17, ab 21. April 2014</option>
      <option value="1397507698">Woche 16, ab 14. April 2014</option>
      <option value="1396902898">Woche 15, ab 07. April 2014</option>
      <option value="1396298098">Woche 14, ab 31. März 2014</option>
      <option value="1395693298">Woche 13, ab 24. März 2014</option>
      <option value="1395088498">Woche 12, ab 17. März 2014</option>
      <option value="1394483698">Woche 11, ab 10. März 2014</option>
      <option value="1393878898">Woche 10, ab 03. März 2014</option>
      <option value="1393274098">Woche 09, ab 24. Februar 2014</option>
      <option value="1392669298">Woche 08, ab 17. Februar 2014</option>
      <option value="1392064498">Woche 07, ab 10. Februar 2014</option>
      <option value="1391459698">Woche 06, ab 03. Februar 2014</option>
      <option value="1390854898">Woche 05, ab 27. Januar 2014</option>
      <option value="1390250098">Woche 04, ab 20. Januar 2014</option>
      <option value="1389645298">Woche 03, ab 13. Januar 2014</option>
      <option value="1389040498">Woche 02, ab 06. Januar 2014</option>
      <option value="1388435698">Woche 01, ab 30. Dezember 2013</option>
      <option value="1387830898">Woche 52, ab 23. Dezember 2013</option>
      <option value="1387226098">Woche 51, ab 16. Dezember 2013</option>
      <option value="1386621298">Woche 50, ab 09. Dezember 2013</option>
      <option value="1386016498">Woche 49, ab 02. Dezember 2013</option>
      <option value="1385411698">Woche 48, ab 25. November 2013</option>
      <option value="1384806898">Woche 47, ab 18. November 2013</option>
      <option value="1384202098">Woche 46, ab 11. November 2013</option>
      <option value="1383597298">Woche 45, ab 04. November 2013</option>
      <option value="1382992498">Woche 44, ab 28. Oktober 2013</option>
      <option value="1382387698">Woche 43, ab 21. Oktober 2013</option>
    </select>
    Das Feld zu $week[0] kann ich auswählen. Wenn ich die Werte einfach in ein Array kopiere und als "options" zuweise, ohne Funktion, geht es.

    Danke für die Hilfe!
    Geändert von benfolds (03.03.2014 um 22:39 Uhr)

  2. #2
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Hi,

    nur mal so eine Vermutung, ohne es jetzt getestet zu haben.

    Du lässt dir einen Timestamp generieren, welcher ja bis auf die SEKUNDE genau ist (Timestamp halt). Wenn du jetzt eine Option auswählst, läuft dein Script ja im Hintergrund nochmals ab, generiert jedoch andere Werte, weil sich ja auch die Zeit verändert hat!! Daher funktioniert die "statische" Funktion mit dem Array, die dynamische, mit dem Timestamp jedoch nicht.

    Lösung: Lass dir den Timestamp auf eine feste Zeit (UHRZEIT z.B. 12:00 Uhr) generieren, dann klappts auch mit dem Speichern (hoff ich ;-))

    Gruß
    Michael
    Geändert von the_scrat (04.03.2014 um 06:31 Uhr)
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  3. #3
    Contao-Nutzer
    Registriert seit
    06.08.2010.
    Beiträge
    72

    Standard

    Jo, das ist es!!

    PHP-Code:
        public function weeklyRecipe(){
            
            
    $dt = new DateTime;
            
    $week[0] = "Nicht Rezept der Woche";
            
    $w strtotime($dt->setISODate(date('Y'), date('W')+10,1)->format('Y-m-d 00:00:00'));
            
    $end strtotime($dt->setISODate(date('Y'), date('W')-20,1)->format('Y-m-d 00:00:00'));
            
            while(
    $w $end){
                
    $week[$w] = "Woche " date('W',$w) . ", ab ".$this->parseDate('d. F Y',$w);
                
    $w $w - (60*60*24*7);
            }

            return 
    $week;
        } 
    ist jetzt vielleicht etwas umständlich aber zum testen reichts
    Und wieder was gelernt: contao überprüft die werte nach dem Senden. Macht ja auch irgendwie sinn

    Danke!!

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
  •