HTMLForm
HTMLForm je třída pro zpracování všeho, co souvisí s formuláři uživatelského rozhraní. MediaWiki 1.16 a novější obsahují HTMLForm v HTMLForm.php.
Výukový program HTMLForm ukazuje základy HTMLForm.
Parametry
Přesná specifikace pro:
- Generické parametry na stránce Tutoriál HTMLForm část 2
- Parametry související s typem/třídou na stránce Tutoriál HTMLForm část 3
| Parametr | Typ | Popis | Default | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| type | řetězec | Typ obsahu formuláře, který se má vytvořit. Například: text, radio nebo multiselect. Tyto jsou namapovány na konkrétní podtřídy v HTMLForm.
To se zhruba promítá do atributu typu | |||||||||||||||
| class | řetězec | Podtřída PHP, která se má použít pro obsah tohoto formuláře. To provede stejnou funkci jako parametr typu, ale přímočařeji. Toto NENÍ třída CSS! | |||||||||||||||
| size | celé číslo | Nastavuje délku textových polí | |||||||||||||||
| maxlength | celé číslo | Nastavuje maximální délku textových polí | |||||||||||||||
| min | celé číslo | Minimální částka pro danou hodnotu | |||||||||||||||
| max | celé číslo | Maximální částka pro danou hodnotu | |||||||||||||||
| invert | boolean | Ve výchozím nastavení nastavit vstupy typu přepínač na zaškrtnuté | |||||||||||||||
| options | pole | Možnosti, které lze prezentovat v elementu formuláře s vícenásobným výběrem, přepínačem nebo výběrem. Mapuje nezpracované textové popisky na hodnoty. Některé typy polí podporují víceúrovňová pole. Přepíše options-message.
| |||||||||||||||
| rows | pole | Řádky, které se mají zobrazit v elementu formuláře checkmatrix, nebo počet řádků zobrazených pro element formuláře textarea | |||||||||||||||
| columns | pole | Sloupce, které se mají prezentovat v elementu formuláře checkmatrix | |||||||||||||||
| force-options-off | pole | Možnosti pro nastavení nezaškrtnutých a zakázaných hodnot v elementu formuláře checkmatrix | |||||||||||||||
| force-options-on | pole | Možnosti pro nastavení zaškrtnutých a povolených hodnot v elementu formuláře checkmatrix | |||||||||||||||
| section | řetězec | Klíč pro zobrazení zprávy i18n jako záhlaví sekce nebo podsekce. Podsekce by měly používat znak '/', např. foo/bar/baz vytvoří preferenci 'baz' uvnitř sekce 'bar', která se nachází uvnitř sekce 'foo'.
| |||||||||||||||
| label-message, buttonlabel-message |
řetězec | Klíč pro zprávu i18n, která se zobrazí jako popisek pro vstup/tlačítko formuláře. Klíč zprávy nebo objekt pro zprávu, který se má použít jako popisek. Může to být pole klíčů zpráv a poté parametrů zprávy. | |||||||||||||||
| label, label-raw, buttonlabel |
řetězec | Popisek pro vstup/tlačítko formuláře. Přepsáno parametrem label-message. | |||||||||||||||
| vertical-label | boolean | Nastavte na hodnotu true, pokud chcete, aby se popisek zobrazoval nad možnostmi, nikoli nalevo od nich. | |||||||||||||||
| id | řetězec | Atribut ID, který se má přiřadit vstupu | |||||||||||||||
| cssclass | řetězec | Atribut třídy, který se má přiřadit vstupu | |||||||||||||||
| csshelpclass | řetězec | CSS třída používaná ke stylování textu nápovědy | |||||||||||||||
| validation-callback | pole | Třída a funkce, které se mají použít pro ověření vstupu. Podívejte se na stránku HTMLFormField::validate(). | |||||||||||||||
| filter-callback | pole | Třída a funkce, které se mají použít pro filtrování vstupu. To vám dává možnost upravit zadanou hodnotu před jejím zpracováním. Podívejte se na stránku HTMLFormField::filter(). | |||||||||||||||
| help-message | řetězec | Klíč pro zobrazení zprávy i18n přímo pod prvkem formuláře. Přepíše help-messages a help. Může to být pole klíčů zpráv a poté parametrů zprávy.
| |||||||||||||||
| help | řetězec | Zpráva, která se zobrazí přímo pod prvkem formuláře a použije se jako text nápovědy. | |||||||||||||||
| tooltip | řetězec | Přípona klíče pro zprávy i18n, která se má použít pro atributy titulku a nebo accesskey (tooltip-YOURVALUE a accesskey-YOURVALUE)
| |||||||||||||||
| placeholder | řetězec | Hodnota, která se má použít pro atribut zástupného symbolu HTML5 | |||||||||||||||
| placeholder-message | řetězec | Klíč pro zprávu i18n, která se zobrazí jako zástupný symbol | |||||||||||||||
| disabled | boolean | Zakázat úpravy a odeslání vstupu z formuláře | |||||||||||||||
| readonly | boolean | Zakázat úpravu vstupu ve formuláři | |||||||||||||||
| required | boolean | Pokud je hodnota true, vstup nemůže zůstat prázdný. Je předáváno objektu, což značí, že se jedná o povinné pole.
| |||||||||||||||
| name | řetězec | Přepsat název vstupu.
Pokud chcete jiný název (např. bez předpony "wp"), zadejte jej zde a bude použit bez úprav. |
wp{$fieldname} | ||||||||||||||
| dir | řetězec | Směr prvku. | |||||||||||||||
| 'options-messages' | pole | asociativní mapování klíčů zpráv na hodnoty pomocí pole. Některé typy polí podporují víceúrovňová pole.
Overwrites 'options' and 'options-message'. | |||||||||||||||
| 'options-message' | pole | klíč zprávy nebo objekt, který má být analyzován za účelem extrahování seznamu možností (například ipbreason-dropdown).
| |||||||||||||||
| 'help-messages' | pole | pole klíčů/objektů zpráv. Stejně jako výše, každá položka může být polem klíčů zpráv a poté parametrů. Přepíše help.
| |||||||||||||||
| 'help-inline' | pole | Zda se bude text nápovědy (definovaný pomocí výše uvedených možností) zobrazovat přímo za vstupním polem, a ne ve vyskakovacím okně.
Only used by OOUI form fields. |
true
| ||||||||||||||
| 'hide-if' | pole | Výraz zadaný jako pole určující, kdy má být pole skryto. První hodnota pole musí být logický operátor výrazu.
Podporované výrazy:
Výrazy budou předány frontendovému modulu JavaScriptu, který bude průběžně aktualizovat viditelnost pole. Note, you can only check expressions against preferences.
If you want to hide preferences based on other criteria you should consider altering the type to hidden based on that condition.
For example, do not check | |||||||||||||||
| 'disable-if' | pole | Výraz zadaný jako pole uvádějící, kdy má být pole zakázáno, s použitím stejné syntaxe jako podmínky hide-if popsané výše. | |||||||||||||||
| nodata | boolean | Pokud je nastaveno (na libovolnou hodnotu, která převede na true), data pro toto pole nebudou načtena ze skutečného požadavku. Místo toho se jako hodnota tohoto pole vždy nastaví výchozí data. | |||||||||||||||
| default | řetězec (nebo pole) | Výchozí hodnota(y) pro pole (nezaměňovat s $wgDefaultUserOptions). Rozšíření/vzhledy, které přidávají předvolby pomocí háčku, musí pro nastavení výchozí hodnoty použít UserGetDefaultOptions. |
Příklad použití
třída SpecialTestForm
<?php
class SpecialTestForm extends SpecialPage {
public function __construct() {
parent::__construct( 'TestForm' );
}
public function execute( $par ) {
$this->getOutput()->setPageTitle( 'Test form' );
$formDescriptor = [
'myfield1' => [
'section' => 'section1/subsection',
'label-message' => 'testform-myfield1',
'type' => 'text',
'default' => 'Meep',
],
'myfield2' => [
'section' => 'section1',
'class' => 'HTMLTextField', // HTMLTextField stejné jako typ 'text'
'label-message' => 'testform-myfield2',
],
'myfield3' => [
'class' => 'HTMLTextField',
'label' => 'Foo bar baz',
],
'myfield4' => [
'class' => 'HTMLCheckField',
'label' => 'This be a pirate checkbox',
'default' => true,
],
'omgaselectbox' => [
'class' => 'HTMLSelectField',
'label' => 'Select an oooption',
'options' => [
'Pirates' => 'pirate',
'Ninjas' => 'ninja',
'Back to the NINJAR!' => 'ninjars',
],
],
'omgmultiselect' => [
'class' => 'HTMLMultiSelectField',
'label' => 'Weapons to use',
'options' => [
'Cannons' => 'cannon',
'Swords' => 'sword',
],
'default' => [ 'sword' ],
],
'radiolol' => [
'class' => 'HTMLRadioField',
'label' => 'Who do you like?',
'options' => [
'Pirates' => 'pirates',
'Ninjas' => 'ninjas',
'Both' => 'both',
],
'default' => 'pirates',
],
];
$htmlForm = new HTMLForm( $formDescriptor, $this->getContext() );
$htmlForm
->setSubmitText( 'Foo submit' )
->setSubmitCallback( [ $this, 'trySubmit' ] )
->show();
}
public function trySubmit( $formData ) {
if ( $formData[ 'myfield1' ] === 'Fleep' ) {
return true;
}
return 'Fail';
}
}
$wgSpecialPages['TestForm'] = 'SpecialTestForm';
i18n/en.json
{
"@metadata": {
"authors": [
"MW_Kappa"
]
},
"testform-desc": "some informative text for page Special:Version",
"section1": "display text for section1",
"subsection": "display text for subsection"
}
Před verzí MediaWiki 1.35 musela zpráva i18n, která se zobrazovala jako záhlaví sekce nebo podsekce, začínat řetězcem '-', pokud neexistoval žádný prefix zprávy. |
Formáty zobrazení
Výchozí formát zobrazení pro HTMLForm je table s popisky v levém sloupci a vstupy v pravém sloupci. Je možné vybrat několik různých formátů, např. $htmlForm->setDisplayFormat( 'div' ); použije rozvržení založené na divech. Existují i vzácnější formáty zobrazení, jako například raw a inline.
| Verze MediaWiki: | ≥ 1.26 |
Chcete-li změnit formulář tak, aby používal sadu nástrojů OOUI pro prvky HTMLForm, počínaje MediaWiki 1.26 budete muset v HTMLForm::factory použít jako formát zobrazení 'ooui':
$htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() );
Historické poznámky
HTMLForm byl zaveden uživatelem Werdna v r48740 jako součást přepracování jeho systému preferencí. Historicky MediaWikis od verze 1.4.0 do verze 1.11.0 obsahovaly jinou třídu HTMLForm, kterou napsali Hashar a JeLuF. Tato třída HTMLForm byla odstraněna v r29245.