Formulierveld
From Joomla! Documentation
Inleiding
Formuliervelden zijn velden in een HTML <form>
. Joomla! 2.5 en nieuwer leveren de JForm class om gemakkelijk en flexibel formulieren te maken met een groot aantal formuliervelden. Elk formulierveld type is een sub-class van JFormField.
Naast een flexibel pagina-aanmaak hulpmiddel te zijn, worden JFormField's door Joomla! gebruikt om administrators de mogelijkheid te geven Joomla! of zijn extensies in te stellen zonder de onderliggende code te wijzigen. In Joomla! 1.5, werd dit afgehandeld door de niet meer te gebruiken JParameter en JElement classes.
Om formuliervelden bij het instellen van extensies te definiëren, moet u ze opnemen in een benoemde fieldset, zoals <fieldset name="basic">
, die staat binnen de <fields name="params">
sectie van het <config>
element in uw XML manifest bestand.
== Formulier validatie ==
Joomla heeft client-side en server-side formulier validatie mogelijkheden.
Server-side validatie is essentieel aangezien alles daarvoor overschreven kan worden aan de gebruikers kant door hackers. Maar client-side is het meest gebruikersvriendelijk, beide gebruiken is dus het beste.
Client-side validatie
.. wordt gedaan via javascript terwijl de gebruiker de formuliervelden invult.
Het gebruikt de HTML classes required en validate-[xxx] (waarbij [xxx] een joomla of eigen regel is; bijvoorbeeld validate-numeric)
Meer staat hier: Client-side formulier validatie
Server-side validatie
.. wordt uitgevoerd nadat het formulier verzonden is en zal normaliter naar het formulier terugkeren als het niet goed is met enkele extra berichten.
Het gebruikt de HTML attributen required ("true" of "required") en validate (waarbij de waardes een Joomla of eigen regel zijn; bijvoorbeeld validate="email")
Meer staat hier: Server-side formulier validatie
== Standaard formulierveld types ==
Talrijke formulierveld types zijn in Joomla! gebouwd. De volgende tabel toont deze standaard types en hun beschikbaarheid. Gebruik de één pagina verwijzing als u alle bestaande formulierveld documentatie wilt afdrukken.
Let op dat veel van deze velden beschikbaar zijn als parameter types in Joomla! 1.5. Kijk, voor een lijst met parameter types bij J1.5:Standaard parameter types. Kijk, voor een vergelijking tussen formulierveld en parameter types bij Standaard formulierveld en parameter types.
Type | Beschrijving | Beschikbaarheid | |
---|---|---|---|
accessiblemedia | provides modal access to the media manager for insertion of images with upload for users with appropriate permissions and a text field for adding a alternative text. | and newer | |
accesslevel | Biedt een drop-down lijst met view toegangsniveaus. | en nieuwer | |
cachehandler | Biedt een lijst met beschikbare cache handling opties. | en nieuwer | |
calendar | Biedt een tekstvak voor het invoeren van een datum. Een pictogram naast het tekstvak bevat een link naar een pop-up kalender, die ook kan worden gebruikt om de datum in te voeren. | en nieuwer | |
captcha | Biedt het gebruik van een captcha plugin. | en nieuwer | |
category | Biedt een drop-down lijst met de categorieën voor een extensie. | en nieuwer | |
checkbox | Biedt één vak die aan- of uitgevinkt kan worden | en nieuwer | |
checkboxes | Biedt onbeperkte vakjes die kunnen worden gebruikt voor de meerdere selecties. | en nieuwer | |
Chrome Style | Biedt een lijst met template chroom stijl opties gegroepeerd per template. | en nieuwer | |
color | Biedt een kleurkiezer bij het klikken op het invoervak. | en nieuwer | |
Content Language | Biedt een lijst met inhoud talen. | en nieuwer | |
Content Type | Biedt een lijst met inhoud types. | en nieuwer | |
combo | Biedt een keuze lijst met invoer vak veld. | en nieuwer | |
componentlayout | Biedt een gegroepeerde lijst met core en alternatieve template lay-outs voor een component item. | en nieuwer | |
contentlanguage | Biedt een lijst van geïnstalleerde inhoud talen voor gebruik in combinatie met de taalswitch plugin. | en nieuwer | |
Database Connection | Biedt een lijst met beschikbare databaseverbindingen, eventueel beperkt tot een bepaalde lijst. | en nieuwer | |
editor | Biedt een editor-veld. | en nieuwer | |
editors | Biedt een drop-down lijst met beschikbare WYSIWYG-editors. Gebruik vanaf in plaats daarvan het plugins formulierveld . | ||
Biedt een e-mail veld. | en nieuwer | ||
file | Biedt een invoerveld voor bestanden | en nieuwer | |
filelist | Biedt een drop-down lijst met bestanden uit een bepaalde map. | en nieuwer | |
folderlist | Biedt een drop-down lijst met mappen uit een bepaalde map. | en nieuwer | |
groupedlist | Biedt een drop-down lijst met items ingedeeld in groepen. | en nieuwer | |
header tag | Biedt een drop-down lijst met header tags (h1-h6). | en nieuwer | |
helpsite | Biedt een drop-down lijst met de help-sites voor uw Joomla installatie. | en nieuwer | |
hidden | Biedt een verborgen veld voor het opslaan van een formulierveld waarvan de waarde niet direct door een gebruiker in het beheer gewijzigd kan worden (het kan gewijzigd worden in de code of door het bewerken van het "params.ini" bestand). | en nieuwer | |
imagelist | Biedt een drop-down lijst met afbeeldingen uit een bepaalde map. | en nieuwer | |
integer | Biedt een drop-down lijst van gehele getallen tussen een minimum en een maximum. | en nieuwer | |
language | Biedt een drop-down lijst van de geïnstalleerde talen voor de website of het beheergedeelte. | en nieuwer | |
list | Biedt een drop-down lijst met eigen gedefinieerde items. | en nieuwer | |
media | Biedt modale toegang tot mediabeheer voor het invoegen van afbeeldingen met upload-rechten voor gebruikers met de juiste machtigingen. | en nieuwer | |
menu | Biedt een drop-down lijst met de beschikbare menu's van uw Joomla site. | en nieuwer | |
Menu Item | Biedt een drop-down lijst met de beschikbare menu-items van uw Joomla site. | en nieuwer | |
meter | Biedt een meetlat om waarden in een bereik te tonen. | en nieuwer | |
Module Layout | Biedt een lijst met alternatieve lay-out voor een module gegroepeerd per core en template. | en nieuwer | |
Module Order | Biedt een drop-down lijst om de volgorde van modules op een bepaalde positie in te stellen | en nieuwer | |
Module Position | Biedt een tekst invoerveld om de positie van een module in te stellen. | en nieuwer | |
Module Tag | Biedt een lijst met html5-elementen (gebruikt een module op te maken). | en nieuwer | |
note | Ondersteunt een tekstveld van één regel. | en nieuwer | |
number | Biedt een tekstvak van één regel met op-en-neer mogelijkheden om een getal in het veld in te stellen. | en nieuwer | |
password | Biedt een tekstvak voor het invoeren van een wachtwoord. De tekens van het wachtwoord worden verborgen als ze worden ingevoerd. | en nieuwer | |
plugins | Biedt een lijst met plugins uit een bepaalde map. | en nieuwer | |
predefinedlist | Formulierveld om een lijst met vooraf gedefinieerde waarden te laden. | en nieuwer | |
radio | Biedt radio-knoppen om verschillende opties te kiezen. | en nieuwer | |
range | Biedt een horizontale schuifbalk om een waarde in een bereik op te geven. | en nieuwer | |
repeatable | Laat formuliervelden toe die zo veel opties als de gebruiker wenst kunnen hebben. | en nieuwer | |
rules | Biedt een matrix van groepen t.o.v. acties om toegangsbeheer te regelen. Het getoonde is afhankelijk van de context. | en nieuwer | |
sessionhandler | Biedt een drop-down lijst met session handler opties. | en nieuwer | |
spacer | Biedt een visuele scheiding tussen formuliervelden. Het is puur een visueel hulpmiddel en er wordt geen waarde opgeslagen. | en nieuwer | |
sql | Biedt een drop-down lijst met items verkregen door het uitvoeren van een query op de Joomla Database. De resultaten van de eerste kolom die door de query worden geretourneerd, bevatten de waarden voor de drop-down lijst. | en nieuwer | |
subform | biedt een manier om XML formulieren te gebruiken in elkaar of uw bestaande formulieren te hergebruik in uw huidige formulier. | en nieuwer | |
tag | Biedt een startpunt voor tags (of AJAX of genest). | en nieuwer | |
tel | Biedt een invoerveld voor een telefoonnummer. | en nieuwer | |
templatestyle | Biedt een drop-down lijst met template stijlen. | en nieuwer | |
text | Biedt een tekstvak voor het invoeren van gegevens. | en nieuwer | |
textarea | Biedt een tekstvak voor het invoeren van meerdere regels tekst. | en nieuwer | |
timezone | Biedt een drop-down lijst met tijdzones. | en nieuwer | |
URL | Biedt een URL-invoerveld. | en nieuwer | |
user | Veld voor het selecteren van een gebruiker uit een modale lijst. Toont gebruikersnaam en slaat gebruikers-ID op | en nieuwer | |
useractive | Veld om een lijst met beschikbare gebruikers-actieve statussen te tonen. | en nieuwer | |
usergroup | Biedt een drop-down lijst met gebruikersgroepen. Gebruik vanaf in plaats daarvan usergrouplist. | en nieuwer | |
usergrouplist | Veld om een drop-down lijst te laden met beschikbare gebruikersgroepen. Vervangt usergroup formulierveld type. | en nieuwer | |
userstate | Veld om een lijst met beschikbare gebruikers statussen te tonen. | en nieuwer |
== Eigen formulierveld type's ==
Een extensie kan zijn eigen formulierveld types definiëren, welke daarna gebruikt kunnen worden in zijn eigen formulieren of in formulieren aangemaakt in een andere extensie. Zie Het maken van een eigen formulierveld type voor uitleg.
=== Modale formulierveld types ===
Als u een veld heeft met veel waarden, die niet in een keuzelijst passen, dan kunt u altijd een modaal formulierveld maken dat de gebruiker de mogelijkheid geeft om een item op een modale pagina te kiezen via een tabel, filter-opties, etc. (net als iedere beheer-tabel, bijvoorbeeld "Artikelen").
Zie Het maken van een modaal formulierveld
== Algemene attributen == === Labelclass ===
Het toevoegen van het attribuut labelclass
voegt een CSS class toe aan het label van het formulierveld. Bron:
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=28450
=== Showon ===
Het toevoegen van het attribuut showon
geeft de mogelijkheid het veld te verbergen afhankelijk van de waard(en) van een ander veld.
Syntaxis om het veld alleen te tonen bar wanneer foo op "1" en baz op "1" staat:
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="bar"
type="text"
showon="foo:1"
/>
Om aan meerdere waarden te voldoen kan men een door komma's gescheiden lijst met waarden aanbieden. Zoals showon="foo:1,2"
Om meerdere velden te combineren kunt u [AND]
gebruiken. Zoals showon="foo:1[AND]bar:1"
Syntaxis om het veld "bar" alleen te tonen wanneer "foo" op "1" en "baz" op "1" is gezet:
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="baz"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="bar"
type="text"
showon="foo:1[AND]baz:1"
/>
Om een keuze tussen verschillende velden aan te maken, kunt u [OR] gebruiken. Zoals showon="foo:1[OR]bar:1".
Syntaxis om het veld "bar" alleen te tonen wanneer "foo" op "1" of "baz" op "1" is gezet:
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="baz"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="bar"
type="text"
showon="foo:1[OR]baz:1"
/>
U kan ook "waarde niet gelijk aan" gebruiken zoals showon="field1!:1".
Syntaxis om het veld "bar" alleen te tonen wanneer "foo" niet gelijk is aan "1":
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="baz"
type="list"
showon="foo!:1"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
Om een veld te tonen als een ander veld (bijvoorbeeld foo) geselecteerd is (als dat andere veld niet leeg is), u kunt showon="foo!:" gebruiken (dus zonder een waarde op te geven).
Dit is ingevoerd via PullRequest: https://github.com/joomla/joomla-cms/pull/3379, beschikbaar vanaf Joomla 3.2.4.
Foutopsporing: Attributen werken niet
Als je een oudere versie van onze ontwikkelaar documentatie hebt gelezen, of je formuliercode hebt overgenomen van een bestaande extensie, dan kunnen er problemen ontstaan dat attributen zoals showon
helemaal niet werken. Om enkele specifieke attributen te laten werken moeten je velden gerenderd worden via de renderField()
methode. Bijvoorbeeld:
<div class="row-fluid">
<div class="span6">
<?php
foreach($this->form->getFieldset() as $field) {
echo $field->renderField();
}
?>
</div>
</div>