Ergebnis 1 bis 2 von 2

Thema: [calendarfield] in eigener Erweiterung nutzen

  1. #1
    Contao-Nutzer Avatar von Gausi
    Registriert seit
    04.09.2009.
    Beiträge
    149

    Standard [calendarfield] in eigener Erweiterung nutzen

    Ich hoffe, das wird jetzt mein letztes Problem fürs erste ...

    In einer eigenen Erweiterung möchte ich den Datepicker im Frontend nutzen. Dazu gibt es ja die Erweiterung calendarfield.

    Jetzt kann ich aber nicht über den Backend-Formulargenerator gehen, sondern ich möchte in meinem Code ein eigenes Frontend-Formular bauen, das so ein Feld nutzt.

    Ausschnitt aus meinem Code dazu wäre

    PHP-Code:
    $fields['startDate'] = array(
        
    'name' => 'startDate',
        
    'label' => $GLOBALS['TL_LANG']['MSC']['caledit_startdate'],
    // inputtype nicht "text", sondern "calendarfield". Das ist der Typ dieser Erweiterung
        
    'inputType' => 'calendarfield'
        
    'value' => $NewEventData['startDate'],
        
    'eval' => array('rgxp' => 'date''mandatory' => true'dateImage' => '1')
    );

    // .....

    $arrWidgets = array();
        
    // Initialize widgets

        
    foreach ($fields as $arrField) {
            
    $strClass $GLOBALS['TL_FFL'][$arrField['inputType']];
            
    $arrField['eval']['required'] = $arrField['eval']['mandatory'];
                
            
    $objWidget = new $strClass($this->prepareForWidget($arrField$arrField['name'], $arrField['value']));

            
    // Validate widget
            
    if ($this->Input->post('FORM_SUBMIT') == 'caledit_submit') {
                
    $objWidget->validate();
                if (
    $objWidget->hasErrors()) {                    
                    
    $doNotSubmit true;
                }
            }            
            
    $arrWidgets[$arrField['name']] = $objWidget;
        } 
    Unter Contao 3 und der damaligen Version von calendarfield hat das auch so geklappt, aber in 4.4 sehe ich das hübsche JS-Eingabe-Feld nicht. Ich vermute, dass ich bei den eval-Optionen was einfügen muss, stehe aber auf dem Schlauch, was.

    Entsprechende Scripte sind auch eingebunden. Wenn ich auf einer anderen Seite (selbes Seitenlayout) ein Formular über den Formulargenerator einfüge, läuft es auch.

    In den Code der calendarfield-Erweiterung wird reingesprungen. Wenn ich da nämlich für ungültigen Code sorge, gibt's ne Exception.
    All of this has happened before - but the question remains: Does all of this have to happen again?

  2. #2
    Contao-Nutzer Avatar von Gausi
    Registriert seit
    04.09.2009.
    Beiträge
    149

    Standard

    Gut, ist vielleicht ein spezielles Problemchen hier ...

    Ich kann das Kalenderfeld in meiner Erweiterung aktivieren, wenn ich in der Calendarfield-Erweiterung eine Zeile einfüge:

    PHP-Code:
    public function __construct($arrAttributes null)
      {
        
    parent::__construct($arrAttributes);
            
        
    $this->rgxp 'date';

    // diese zeile ist original nicht drin, mit dieser läuft es.    
        
    $this->parse($arrAttributes);
      } 
    Aber das kann ja nicht die Lösung sein. Es scheint mir so, als würde in einem Formular (erzeugt aus dem BE mit dem Formulargenerator), nach dem construct aller Felder die Parse-Methode aufgerufen werden. Wie kann ich das bei mir im Code auch erreichen?

    Edit:

    Ach, manchmal hilft es, wenn man sich den Frust hier runterschreibt.

    Wenn ich im Code von oben das parse() einfüge, passt es jetzt, ohne die andere Erweiterung anzupassen.
    PHP-Code:
    $objWidget = new $strClass($this->prepareForWidget($arrField$arrField['name'], $arrField['value']));
    $objWidget->parse(); 
    Falls sonst wer das Problem hat, dann gibt es hier jetzt wenigstens die Lösung.
    Geändert von Gausi (26.10.2018 um 18:10 Uhr)
    All of this has happened before - but the question remains: Does all of this have to happen again?

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
  •