Ergebnis 1 bis 9 von 9

Thema: Ein Formular zu kreieren

  1. #1
    Contao-Fan
    Registriert seit
    04.02.2010.
    Ort
    Suisse
    Beiträge
    319
    User beschenken
    Wunschliste

    Standard Ein Formular zu kreieren

    Hallo,

    Ich habe ein Formular für meine Erweiterung entwickeln begonnen. Es funktioniert schon gut aber es fehlt noch einige Sachen. Ich möchte gern TYPOlight nutzen um das Formular zu erstellen und nicht alles von Hand schreiben.

    Deswegen habe ich zwei Fragen:
    • Ich kann die Formularfelder erzeugen aber wie machen das mit "Label" ?
    • Die Validierung von Formularfeldern ist nicht aktiv. Wie aktivieren ?


    Mein Kode:

    Code:
    class subscription extends rdv_calendar
    {
    
    	/**
    	 * Template
    	 * @var string
    	 */
    	protected $strTemplate = 'fe_subscription';
    
    
    	/**
    	 * Generate module
    	 */
    	protected function compile()
    	{
    	
    	// Champs du formulaire d'enregistrement
    	$arrFields = array
    	(
    		'customer_title' => array
    		(
    			'name'                    => 'customer_title',
    			'label'                   => &$GLOBALS['TL_LANG']['tl_rdv_light']['customer_title'],
    			'inputType'               => 'select',
    			'options'                 => array('Mrs', 'Mr'),
    			'eval'                    => array('includeBlankOption'=>true, 'maxlength'=>64, 'mandatory'=>true)
    		),
    		
    		'customer_firstname' => array
    		(
    			'name'                    => 'customer_firstname',
    			'label'                   => &$GLOBALS['TL_LANG']['tl_rdv_light']['customer_firstname'],
    			'inputType'               => 'text',
    			'eval'                    => array('rgxp'=>'alnum', 'maxlength'=>64, 'mandatory'=>true)
    		),
    	
    		'customer_lastname' => array
    		(
    			'name'                    => 'customer_lastname',
    			'label'                   => &$GLOBALS['TL_LANG']['tl_rdv_light']['customer_lastname'],
    			'inputType'               => 'text',
    			'eval'                    => array('rgxp'=>'alnum', 'maxlength'=>64, 'mandatory'=>true)
    		),
    	
    		'customer_phone' => array
    		(
    			'name'                    => 'customer_phone',
    			'label'                   => &$GLOBALS['TL_LANG']['tl_rdv_light']['customer_phone'],
    			'inputType'               => 'text',
    			'eval'                    => array('rgxp'=>'digit', 'maxlength'=>64, 'mandatory'=>true)
    		),
    	
    		'customer_mail' => array
    		(
    			'name'                    => 'customer_mail',
    			'label'                   => &$GLOBALS['TL_LANG']['tl_rdv_light']['customer_mail'],
    			'inputType'               => 'text',
    			'eval'                    => array('rgxp'=>'email', 'mandatory'=>true, 'maxlength'=>128, 'decodeEntities'=>true)
    		),
    	
    		'customer_description' => array
    		(
    			'name'                    => 'customer_description',
    			'label'                   => &$GLOBALS['TL_LANG']['tl_rdv_light']['customer_description'],
    			'inputType'               => 'textarea',
    			'eval'                    => array('rgxp'=>'alnum', 'rows'=>4, 'cols'=>40, 'allowHtml'=>true)
    		)
    	);
    	
    		$arrWidgets = array();
    
    		// Initialize widgets
    		foreach ($arrFields as $arrField)
    		{
    			// FFL = Form Field
    			$strClass = $GLOBALS['TL_FFL'][$arrField['inputType']];
    
    			$arrField['eval']['required'] = $arrField['eval']['mandatory'];
    			$objWidget = new $strClass($this->prepareForWidget($arrField, $arrField['name'], $arrField['value']));
    
    
    			$arrWidgets[] = $objWidget;
    		}
    
    		$this->Template->fields = $arrWidgets;
    		$this->Template->submit = 'Envoyer'; //trouver comment passer une variable ['TL_LANG']
    		$this->Template->action = ampersand($this->Environment->request);
    
    		// Add RDV
    		if ($this->Input->post('FORM_SUBMIT') == 'tl_rdv')
    		{
    			$this->addRdv();
    			
    			//Permet d'actualiser la page sans renvoyer les donn�es dans la BD
    			$this->reload();
    		}
    	}
    	
    	protected function addRdv()
    	{
    
    		// Prepare record
    		$arrSet = array
    		(
    			// 0 = libre et 1 = r�serv�
    			'is_reserved' => 1,
    			'tstamp' => time(),
    			'customer_title' => $this->Input->post('customer_title'),
    			'customer_firstname' => $this->Input->post('customer_firstname'),
    			'customer_lastname' => $this->Input->post('customer_lastname'),
    			'customer_phone' => $this->Input->post('customer_phone'),
    			'customer_mail' => $this->Input->post('customer_mail'),
    			'customer_description' => $this->Input->post('customer_description'),
    		);
    
    		$insert = $this->Database->prepare("INSERT INTO tl_rdv_light %s")->set($arrSet)->execute();
    
    	}
    }
    
    ?>
    Template:

    Code:
    <div class="<?php echo $this->class; ?>"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
    <?php if ($this->headline): ?>
     
    <<?php echo $this->hl; ?>><?php echo $this->headline; ?></<?php echo $this->hl; ?>>
    <?php endif; ?>
    
    <!-- indexer::stop -->
        <div class="form">
        
            <form action="<?php echo $this->action; ?>" method="post">
    
            <input type="hidden" name="FORM_SUBMIT" value="tl_rdv" /><?php echo $this->messages; ?>
    
                <?php foreach ($this->fields as $objWidget): ?>
                    <div class="widget">
                        <?php echo $objWidget->generateWithError(); ?> <?php if ($objWidget->required): ?><span class="mandatory">*</span><?php endif; ?> 
                    </div>
                <?php endforeach; ?>
    
                <input type="submit" class="submit" value="<?php echo $this->submit; ?>" />
    
            </form>
    
        </div>
    <!-- indexer::continue -->
    
    </div>
    Vielen Dank im Voraus

  2. #2
    Gesperrt
    Registriert seit
    22.07.2009.
    Ort
    Dortmund, NRW
    Beiträge
    113

    Standard

    Hi, die Felder haben eine ->validate Methode und dann ein ->hasErrors() zur Überprüfung. Sehr gut kann man sich das in der TallAFriend-Erweiterung ansehen, weil die quasi nichts anderes macht.

    MFG Jan

  3. #3
    Contao-Fan
    Registriert seit
    04.02.2010.
    Ort
    Suisse
    Beiträge
    319
    User beschenken
    Wunschliste

    Standard

    Hallo,

    Tatsächlich hatte ich das nicht geschrieben...

    Ich dachte dass es vielleicht eine gute Arbeitsgrundlage war um eine andere Erweiterung studieren und benutzen aber jetzt...

    Was TallAFriend-Erweiterung bedeutet ?

    Vielen Dank

  4. #4
    Gesperrt
    Registriert seit
    22.07.2009.
    Ort
    Dortmund, NRW
    Beiträge
    113

    Standard

    Zitat Zitat von lionel Beitrag anzeigen
    Ich dachte dass es vielleicht eine gute Arbeitsgrundlage war um eine andere Erweiterung studieren und benutzen aber jetzt...

    Was TallAFriend-Erweiterung bedeutet ?
    Zu schnell geschrieben Ich meinte Tell-A-Friend, eine Extension die man hier: https://contao.org/erweiterungsliste...000009.de.html finden kann. Es ist immer recht schwer sich Grundlagen anhand von LEos Modulen anzueignen, weil die recht groß und Featuremächtig sind. TAF ist klein und macht in seinem Modul nichts anderes als ein Formular zu generieren, validieren und zu speichern == einfach zu lesen.

    Was ich ncoh vergessen habe: Wenn die Labels nicht ausgegeben werden liegt es meistens an einer fehlenden Sprachdatei, meist muss man sie noch über $this->loadLanguageFile('name') einbinden.

    MFG Jan

  5. #5
    Contao-Fan
    Registriert seit
    04.02.2010.
    Ort
    Suisse
    Beiträge
    319
    User beschenken
    Wunschliste

    Standard

    Hallo,

    Vielen Dank ! Das Formular funktioniert jetzt perfekt !

    Ich habe eine andere Frage, über die Verwaltung den Sprachen...

    Ich habe also die Funktion loadLanguageFile() benutzen aber wenn ich andere Sprachen habe, es gibt ein Problem.

    Nur für eine Sprache es ist in Ordnung:

    Code:
            $this->loadLanguageFile('default','fr');
            $this->loadLanguageFile('tl_rdv_light','fr');
    Aber wenn ich eine andere Sprache hinzufügen will...

    Code:
            $this->loadLanguageFile('default','fr');
            $this->loadLanguageFile('tl_rdv_light','fr');
    
            $this->loadLanguageFile('default','de');
            $this->loadLanguageFile('tl_rdv_light','de');
    Ich habe die "Label" auf Französisch, der Button (Submit) auf Englisch und das "Label" (Bitte addieren Sie 6 und 6.) für Captcha auf Deutsch...

    Es gibt wahrscheinlich einen Konflikt.

    Können wir ein if() mit einer Funktion von TL benutzen ?

    Danke

  6. #6
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.616
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Die Sprachdateien überschreiben sich gegenseitig, immer die letzte gewinnt. Du kannst nicht mehrere Sprachen gleichzeitig laden (macht auch nicht wirklich Sinn, oder?). TYPOlight lädt immer "en" zuerst, da dass Standardmässig vorhanden sein sollte, dann die eigene Sprache. So sind die Felder mindestens auf Englisch, und falsch übersetzt dann in der eigenen Sprache.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  7. #7
    Contao-Fan
    Registriert seit
    04.02.2010.
    Ort
    Suisse
    Beiträge
    319
    User beschenken
    Wunschliste

    Standard

    Hallo,

    Ja es macht kein Sinn...

    z.B. du benutzt diese Erweiterung für deine Webseite die auf Deutsch geschrieben ist. Die "Label" von dem Formular wird auf Englisch angezeigt.

    Für mich wird es vielleicht das gleiche Problem für eine andere Sprache sein...

    Was muss ich für den Benutzer zu tun, um das Formular in der Sprache seiner Website haben ?

    Danke

  8. #8
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.616
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Die Sprachdateien müssten halt vollständig in der entsprechenden Sprache vorhanden sein.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  9. #9
    Contao-Fan
    Registriert seit
    04.02.2010.
    Ort
    Suisse
    Beiträge
    319
    User beschenken
    Wunschliste

    Standard

    Hallo,

    Ich habe das Problem gefunden. Ich benutzte die Variablen von einer Datei der wahrscheinlich nicht global war.

    Ich habe alles übersetzen und für alle die Variablen "msc" geschrieben und die Datei default.php benutzt.

    Es funktioniert jetzt gut.

    Danke

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 23.01.2011, 23:22
  2. Antworten: 11
    Letzter Beitrag: 09.04.2010, 22:25

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •