Joomla! Programmierung/Programmierung/Komponenten/Front/Das Formular
Inhaltsverzeichnis |
[Bearbeiten] Ziel
In diesem Schritt wird der vorhandene View soweit erweitert, sodass mittels einer zusätzlichen Templatedatei das Formular für die Eintragungen der Gästebucheinträge dargestellt werden kann. Zusätzlich wird in der Standard Templatedatei default.php ein Link, der auf das Formular zeigt hinzugefügt.
[Bearbeiten] Grundlegendes
Die Möglichkeit pber den layout Parameter verschiedenste Templatedateien der Komponente aufzurufen sollte bei der Basistemplatedatei genügend beschrieben worden sein. Deshalb wird hier nicht mehr darauf eingegangen. In diesem Beispiel wird die Datei
form.php heißen und somit über den Parameter layout=form aufrufbar sein.
[Bearbeiten] form.php - die Formulardatei
Erstellen Sie diese im Ordner
tmpl in Ihrem jnafu View die Datei
form.php. Damit erhalten Sie folgende Ordnerstruktur:
[Bearbeiten] Erste Hackversuche unterbinden
Wie in jeder anderen Joomla! Datei sollten Sie als erstes einen Schutz einbauen, der Direktzugriffe auf die Datei unterbindet:
// Verhindern, dass die Datei direkt aufgerufen wird defined('_JEXEC') or die('Restricted access');
[Bearbeiten] Das Formular
Das Formular ist einfach reines HTML, dass am Ende mit ein paar Joomla!spezifischen Schutzfunktionen erweitert wird. Als erstes werden alle Felder abgefragt und der Benutzer kann seinen Eintrag hinterlassen. Danach werden noch ein paar versteckte Felder übergeben.
<!-- Gästebuchformular --> <form action="<?php JRoute::_('index.php?option=com_jnafu'); ?>" method="post" name="jnafuentry"> <fieldset> <!-- Der Name des Verfassers --> <label for="author"><?php echo JText::_('Name'); ?>:</label> <input type="text" id="author" class="inputbox" name="author" value="" /> <br /> <!-- Die Email des Verfassers --> <label for="email"><?php echo JText::_('Email'); ?>:</label> <input type="text" id="email" class="inputbox" name="email" value="" /> <br /> <!-- Eine Checkbox, wo ausgewählt werden kann, ob die Email angezeigt wird --> <label for"show_email"><?php echo JText::_('Show Email'); ?>:</label> <input type="checkbox" id="show_email" class="inputbox" name="show_email" /> <br /> <!-- Homepage des Verfassers --> <label for"homepage"><?php echo JText::_('Homepage'); ?>:</label> <input type="text" id="homepage" class="inputbox" name="homepage" value="" /> <br /> <!-- Der Gästebucheintrag --> <?php echo JText::_('Entry'); ?>: <br /> <textarea name="text" id="text" class="inputbox"></textarea> <br /> <input type="submit" id="submit" class="button" name="submit" value="<?php echo JText::_('Submit'); =>" /> </fieldset> <!-- Verstecktes Feld für den Task --> <input type="hidden" name="task" value="save" /> <!-- Verstecktes Feld für die Tokenüberprüfung --> <?php echo JHTML::_( 'form.token' ); ?> </form>
[Bearbeiten] Der komplette Quellcode
<?php /** * @author Joomla!-Nafu * @authorurl http://www.joomla-nafu.de * @version 0.1 * @license GNU General Public License, http://www.gnu.org/licenses/gpl-2.0.html * * JNafu! - Joomla! 1.5.x Gästebuch Demo Komponente * Copyright (C) 2009 - Joomla!-Nafu * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, see <http://www.gnu.org/licenses/>. **/ // Verhindern, dass die Datei direkt aufgerufen wird defined('_JEXEC') or die('Restricted access'); ?> <!-- Gästebuchformular --> <form action="<?php JRoute::_('index.php?option=com_jnafu'); ?>" method="post" name="jnafuentry"> <fieldset> <!-- Der Name des Verfassers --> <label for="author"><?php echo JText::_('Name'); ?>:</label> <input type="text" id="author" class="inputbox" name="author" value="" /> <br /> <!-- Die Email des Verfassers --> <label for="email"><?php echo JText::_('Email'); ?>:</label> <input type="text" id="email" class="inputbox" name="email" value="" /> <br /> <!-- Eine Checkbox, wo ausgewählt werden kann, ob die Email angezeigt wird --> <label for"show_email"><?php echo JText::_('Show Email'); ?>:</label> <input type="checkbox" id="show_email" class="inputbox" name="show_email" /> <br /> <!-- Homepage des Verfassers --> <label for"homepage"><?php echo JText::_('Homepage'); ?>:</label> <input type="text" id="homepage" class="inputbox" name="homepage" value="" /> <br /> <!-- Der Gästebucheintrag --> <?php echo JText::_('Entry'); ?>: <br /> <textarea name="text" id="text" class="inputbox"></textarea> <br /> <input type="submit" id="submit" class="button" name="submit" value="<?php echo JText::_('Submit'); =>" /> </fieldset> <!-- Verstecktes Feld für den Task --> <input type="hidden" name="task" value="save" /> <!-- Verstecktes Feld für die Tokenüberprüfung --> <?php echo JHTML::_( 'form.token' ); ?> </form>