Handbuch:HTML-Formular Tutorial
HTML-Formular ist ein mächtiger und einfacher Helfer, um Formulare in MediaWiki zu erstellen. Dieses Tutorial hilft Manual:Spezialseiten -Entwicklern beim Einstieg in HTML-Formular.
(Da HTML-Formular ein Front-End-Helfer ist, wird davon ausgegangen, dass Du eine Front-End-Erweiterung entwickelst, d. h. eine spezielle Seite)
Der Rest dieser Seite befasst sich mit den Grundlagen der Erstellung einer generischen speziellen Seitenerweiterung namens MyForm. Dies hängt nicht direkt mit diesem Tutorial zusammen, aber es schadet nichts, zu zeigen, wie die Erweiterung aussehen sollte. Am Ende der Seite zeigt das Special:MyForm "Hello World" an.
Überspringe den Teil für Neulinge und gehe direkt zum Themenbereich HTML-Formular
Ansonsten fangen wir an ...
Dateien und Umgebung
- Diese Erläuterungen gelten für MediaWiki Version 1.23 und höher.
HTML-Formular-Klassen befinden sich in /mediawiki/includes/HTMLForm.php
.
Der Code ist ziemlich sauber und gut genug dokumentiert, was MediaWiki-Programmierer erfreuen sollte.
Deine SpecialPage befindet sich in einer Erweiterung namens MyForm. Du findest sie, indem Du auf Special:MyForm zugreifst.
Den Front-End-Code Deiner SpecialPage findest Du hier:
/mediawiki/extensions/MyForm/MyForm_body.php
Diese obige Datei, die sowohl View / Controller als auch das Modell (Hauptdatei Deiner Erweiterung) enthält, befindet sich unter:
/mediawiki/extensions/MyForm/MyForm.php
Die i18n -Dateien befinden sich im Ordner:
/mediawiki/extensions/MyForm/i18n
Dann .hooks, .alias ... etc.
MyForm.php
<?php
/**
* Notwendige Beschreibung von @file, @authors und Lizenz
* @FILLME!
* Nützlich, um an diesen wichtigen Teil zu erinnern
*/
// Vermeide eine illegale Bearbeitung, kostet nicht viel, ist aber bei korrekter Installation unnötig
if ( !defined( 'MEDIAWIKI' ) ) {
die( -1 );
}
// Extension Declaration
$wgExtensionCredits['specialpage'][] = [
'path' => __FILE__,
'name' => 'MyForm',
'author' => 'My Name',
'version' => '0.1.0',
'url' => 'https://www.mediawiki.org/',
'descriptionmsg' => 'myf-desc',
];
// A var to ease the referencing of files
$dir = __DIR__ . '/';
// i18n file referencing
$wgExtensionMessagesFiles['MyForm'] = $dir . 'MyForm.i18n.php';
// View file referencing
$wgAutoloadClasses['SpecialMyForm'] = $dir . 'MyForm_body.php';
// SpecialPage referencing
$wgSpecialPages['MyForm'] = 'SpecialMyForm';
// The Logic for your extension should be somewhere around here.
// NO PHP Closing bracket "? >". This is pure code.
LocalSettings.php
Vergesse nicht, deine Erweiterung zu installieren, indem du folgendes hinzufügst: require_once( "$IP/extensions/MyForm/MyForm.php" );
.
Verwende bei Anwendung der Erweiterungsverwaltung stattdessen wfLoadExtension( 'MyForm' );
.
MyForm.i18n.php
Diese Seite ist veraltet. |
Diese Datei enthält alle Nachrichten, die in Deinem Formular verwendet werden. Gehe mit den IDs der Nachrichten vorsichtig um. Sie werden später in diesem Lernprogramm spezifiziert.
<?php
// Internationalisation for MyForm extension
// @FILLME!
$messages = [];
// English
$messages['en'] = [
'myf-desc' => 'A generic extension used by the HTMLForm tutorial'
];
// Message documentation (Message documentation)
$messages['qqq'] = [
'myf-desc' => '{{desc}}'
];
// French
$messages['fr'] = [
'myf-desc' => 'Une extension générique utilisée par le tutoriel d\'HTMLForm'
];
// More langages…
// NO PHP Closing bracket "? >". This is pure code.
MyForm_body.php
Zu guter Letzt die Datei, die uns am meisten interessiert.
<?php
/**
* Notwendige Beschreibung von @file, @authors und Lizenz
* @FILLME!
* Immer gut, um sich an diesen wichtigen Teil zu erinnern
*/
// Vermeide eine illegale Bearbeitung, kostet nicht viel, ist aber bei korrekter Installation unnötig
if ( !defined( 'MEDIAWIKI' ) ) {
die( -1 );
}
// Unsere SpecialPage
class SpecialMyForm extends SpecialPage {
public function __construct() {
// Der erste Eintrag muss der Name Deiner speziellen Seite sein
// Ein zweite Eintrag "right" (Rechte) kann hinzugefügt werden, um den Zugriff auf die SpecialPage einzuschränken
parent::__construct( 'MyForm' );
}
/**
* Der Einstiegspunkt für die Seite
* @param string|null $par
*/
public function execute( $par ) {
$this->setHeaders();
$this->getOutput()->addHTML( 'Hello World' );
}
protected function getGroupName() {
return 'other';
}
}
// NO PHP Closing bracket "? >". This is pure code.