HTMLForm
HTMLForm, kullanıcı arayüzü formlarıyla ilgili her şeyi işlemek için bir sınıftır. MediaWiki 1.16 ve daha yenisi HTMLForm.php içinde HTMLForm içerir.
HTMLForm eğitimi HTMLForm temellerini gösterir.
Parametreler
Kesin şartname:
- HTMLForm eğitimi 2. bölüm üzerindeki Genel parametreler
- HTMLForm eğitimi 3. bölüm üzerindeki Tür/Sınıf ile ilgili parametreler
Parametre | Tür | Açıklama |
---|---|---|
type | string | Oluşturulacak form içeriği türü. Örneğin: text , radio veya multiselect . Bunlar HTMLForm'daki belirli alt sınıflarla eşlenir.
Bu kabaca |
class | string | Bu form içeriği için kullanılacak PHP alt sınıfı. Bu, type parametresiyle aynı şeyi başarır, ancak daha doğrudan. Bu CSS sınıfı DEĞİLDİR! |
size | integer | Metin alanlarının uzunluğunu ayarlar |
maxlength | integer | Metin alanlarının maksimum uzunluğunu ayarlar |
min | integer | Değer için minimum miktar |
max | integer | Değer için maksimum miktar |
invert | boolean | Geçiş tipi girişlerini varsayılan olarak işaretli olarak ayarla |
options | array | Çoklu seçim, radyo veya seçim form öğesinde sunma seçenekleri Ham metin etiketlerini değerlerle eşler. Bazı alan türleri çok seviyeli dizileri destekler. Overwrites 'options-message'. |
rows | array | Bir checkmatrix form öğesinde sunulacak satırlar veya textarea form öğesi için gösterilen satır sayısı |
columns | array | Bir checkmatrix form öğesinde gösterilecek sütunlar |
force-options-off | array | Bir checkmatrix form öğesinde işaretlenmemiş ve devre dışı bırakılmış ayarlama seçenekleri |
force-options-on | array | Bir checkmatrix form öğesinde işaretli ve etkin ayarlama seçenekleri |
section | string | Bölüm veya alt bölüm başlığı olarak görüntülenecek bir i18n mesajı tuşu. Alt bölümlerde '/' karakteri kullanılmalıdır; foo/bar/baz, 'foo' bölümü içinde 'bar' bölümünde 'baz' tercihi oluşturur |
label-message, buttonlabel-message |
string | Form girişi/düğmesi için etiket olarak görüntülenecek i18n mesajının tuşu. Mesaj olarak etiket olarak kullanılacak mesaj anahtarı veya nesne. Bir msg tuşu dizisi ve sonra iletiye parametreler olabilir. |
label, label-raw, buttonlabel |
string | Form girişi/düğmesi etiketi. Hlabel-message ile geçersiz kılındı. |
vertical-label | boolean | Etiketin, seçeneklerin solundan ziyade seçeneklerin üstünde görünmesini istiyorsanız true olarak ayarlayın |
id | string | Girdiye atanacak kimlik özelliği |
cssclass | string | Girdiye atanacak sınıf özniteliği |
csshelpclass | string | Yardım metnine stil vermek için kullanılan CSS sınıfı |
validation-callback | array | Giriş doğrulaması için kullanılacak sınıf ve işlev. HTMLFormField::validate() sayfasına bakın |
filter-callback | array | Giriş filtreleme için kullanılacak sınıf ve işlev. Girilen değere işlenmeden önce masaj yapma şansı verir. HTMLFormField::filter() sayfasına bakın |
help-message | string | Form öğesinin hemen altında görüntülenecek bir i18n iletisinin anahtarı. 'help-messages' ve 'help' üzerine yazılır. Bir msg tuşu dizisi ve sonra iletiye parametreler olabilir. |
help | string | Yardım metni olarak kullanılacak form öğesinin hemen altında görüntülenecek mesaj. |
tooltip | string | i18n mesajlarının başlık ve/veya erişim anahtarı özellikleri için kullanılacak soneki (tooltip-DEĞERİNİZ ve accesskey-DEĞERİNİZ )
|
placeholder | string | HTML5 yer tutucu özelliği için kullanılacak değer |
placeholder-message | string | Yer tutucu olarak görüntülenecek i18n mesajının anahtarı |
disabled | boolean | Form girişinin düzenlenmesini ve gönderilmesini devre dışı bırak |
readonly | boolean | Form girişinin düzenlenmesini devre dışı bırak |
required | boolean | Değer true ise, giriş boş bırakılamaz. Gerekli bir alan olduğunu belirten nesneye iletilir. |
name | string | Girişin adını geçersiz kılın (varsayılan değer wp {$fieldname}).
Farklı bir ad istiyorsanız (örneğin, "wp" öneki olmayan bir ad), burada belirtin ve değiştirilmeden kullanılır. |
dir | string | Öğenin yönü. |
'options-messages' | array | associative array mapping message keys to values. Some field types support multi-level arrays.
Overwrites 'options' and 'options-message'. |
'options-message' | array | seçenekler listesini çıkarmak için ayrıştırılacak mesaj anahtarı veya nesne ('ipbreason-dropdown' gibi). |
'help-messages' | array | mesaj anahtarları/nesneleri dizisi. Yukarıdaki gibi, her öğe bir dizi msg anahtarı ve ardından parametreler olabilir. 'help' üzerine yazar. |
'help-inline' | array | Whether help text (defined using options above) will be shown inline after the input field, rather than in a popup.
Defaults to true. Only used by OOUI form fields. |
'hide-if' | array | expression given as an array stating when the field should be hidden. The first array value has to be the expression's logic operator.
Suppo [ 'NOT', array $expression ] Belirli bir ifade true değilse bir alanı gizlemek için. '===' [ '===', string $fieldName, string $value ] To hide a field if another field identified by $field has the value $value. '!==' [ '!==', string $fieldName, string $value ] Same as [ 'NOT', [ '===', $fieldName, $value ] 'OR', 'AND', 'NOR', 'NAND' [ 'XXX', array $expression1, ..., array $expressionN ] To hide a field if one or more (OR), all (AND), neither (NOR) or not all (NAND) given expressions are evaluated as true.
|
nodata | boolean | if set (to any value, which casts to true), the data for this field will not be loaded from the actual request. Instead, always the default data is set as the value of this field. |
default | string (or array) | Alan için varsayılan değer ($wgDefaultUserOptions ile karıştırılmamalıdır) Note extensions/skins adding preferences via hook must make use of UserGetDefaultOptions to set default value. |
Örnek kullanımı
SpecialTestForm sınıfı
<?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 same as type '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"
}
MediaWiki 1.35'ten önce, bölüm veya alt başlık başlığı olarak görüntülenecek i18n iletisi, hiçbir mesaj öneki yoksa '-' ile başlamalıdır. |
Resim biçimlendirmeleri
HTMLForm için varsayılan görüntüleme biçimi, sol sütunda etiketler ve sağ sütunda girdiler bulunan bir table
düzenidir. Birkaç farklı biçim seçmek mümkündür, örn. $htmlForm->setDisplayFormat( 'div' );
div tabanlı bir düzen kullanır, diğerleri daha nadir olanları raw
ve inline
olur.
MediaWiki sürümü: | ≥ 1.26 |
Formu, MediaWiki 1.26 ile başlayarak OOUI araç setini kullanmak üzere değiştirmek için HTMLForm::factory
içinde görüntüleme biçimi olarak 'ooui'
kullanmanız gerekir:
$htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() );
Tarihsel notlar
HTMLForm Werdna tarafından tercihlerini yeniden yazma işleminin bir parçası olarak r48740 ile tanıtıldı. Tarihsel olarak 1.4.0 sürümünden 1.11.0 sürümüne MediaWiki'ler, Hashar ve JeLuF tarafından yazılmış farklı bir HTMLForm sınıfı içeriyordu. Bu HTMLForm r29245 içinde kaldırıldı.