You may have noted that the html form contained in the admin/views/helloworld/tmpl/edit.php file now has the form-validate css class. And that we added a JHtml::_('behavior.formvalidator'); call to tell Joomla to use its javascript form validation.

Modify the admin/models/forms/helloworld.xml file to indicate that the greeting field has to be verified:

Note for the moment that the css class is now "inputbox validate-greeting" and that the attribute required is set to true. It means that this field is required and has to be verified by a handler of the form validator framework of Joomla.

It adds a handler to the form validator of Joomla for fields having the "validate-greeting" css class. Each time the greeting field is modified, the handler will be executed to verify its validity (no digits).
The final step is to verify the form when the save button is clicked.
With your favourite file manager and editor put a file admin/views/helloworld/submitbutton.js containing:

The final step is to implement a getScript function in the HelloWorldModelHelloWorld model:

admin/models/helloworld.php

<?php/** * @package Joomla.Administrator * @subpackage com_helloworld * * @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */// No direct access to this filedefined('_JEXEC')ordie('Restricted access');/** * HelloWorld Model * * @since 0.0.1 */classHelloWorldModelHelloWorldextendsJModelAdmin{/** * Method to get a table object, load it if necessary. * * @param string $type The table name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A JTable object * * @since 1.6 */publicfunctiongetTable($type='HelloWorld',$prefix='HelloWorldTable',$config=array()){returnJTable::getInstance($type,$prefix,$config);}/** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 1.6 */publicfunctiongetForm($data=array(),$loadData=true){// Get the form.$form=$this->loadForm('com_helloworld.helloworld','helloworld',array('control'=>'jform','load_data'=>$loadData));if(empty($form)){returnfalse;}return$form;}/** * Method to get the script that have to be included on the form * * @return string Script files */publicfunctiongetScript(){return'administrator/components/com_helloworld/models/forms/helloworld.js';}/** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */protectedfunctionloadFormData(){// Check the session for previously entered form data.$data=JFactory::getApplication()->getUserState('com_helloworld.edit.helloworld.data',array());if(empty($data)){$data=$this->getItem();}return$data;}}

Verifying the form (server side)

See Server-side form validation for further tutorial information relating to server-side verification.
Verifying the form on the server side is done by inheritance of JControllerForm class. We have specified in the admin/models/forms/helloworld.xml file that the validate server function will use a greeting.php file.

Create a compressed file of this directory archive or directly download the archive and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.

helloworld.xml

<?xml version="1.0" encoding="utf-8"?><extensiontype="component"version="3.0"method="upgrade"><name>COM_HELLOWORLD</name><!-- The following elements are optional and free of formatting constraints --><creationDate>January 2018</creationDate><author>John Doe</author><authorEmail>john.doe@example.org</authorEmail><authorUrl>http://www.example.org</authorUrl><copyright>Copyright Info</copyright><license>License Info</license><!-- The version string is recorded in the components table --><version>0.0.11</version><!-- The description is optional and defaults to the name --><description>COM_HELLOWORLD_DESCRIPTION</description><install><!-- Runs on install --><sql><filedriver="mysql"charset="utf8">sql/install.mysql.utf8.sql</file></sql></install><uninstall><!-- Runs on uninstall --><sql><filedriver="mysql"charset="utf8">sql/uninstall.mysql.utf8.sql</file></sql></uninstall><update><!-- Runs on update; New since J2.5 --><schemas><schemapathtype="mysql">sql/updates/mysql</schemapath></schemas></update><!-- Site Main File Copy Section --><!-- Note the folder attribute: This attribute describes the folder to copy FROM in the package to install therefore files copied in this section are copied from /site/ in the package --><filesfolder="site"><filename>index.html</filename><filename>helloworld.php</filename><filename>controller.php</filename><folder>views</folder><folder>models</folder></files><languagesfolder="site/language"><languagetag="en-GB">en-GB/en-GB.com_helloworld.ini</language></languages><mediadestination="com_helloworld"folder="media"><filename>index.html</filename><folder>images</folder></media><administration><!-- Administration Menu Section --><menulink='index.php?option=com_helloworld'img="../media/com_helloworld/images/tux-16x16.png">COM_HELLOWORLD_MENU</menu><!-- Administration Main File Copy Section --><!-- Note the folder attribute: This attribute describes the folder to copy FROM in the package to install therefore files copied in this section are copied from /admin/ in the package --><filesfolder="admin"><!-- Admin Main File Copy Section --><filename>index.html</filename><filename>helloworld.php</filename><filename>controller.php</filename><!-- SQL files section --><folder>sql</folder><!-- tables files section --><folder>tables</folder><!-- models files section --><folder>models</folder><!-- views files section --><folder>views</folder><!-- controllers files section --><folder>controllers</folder></files><languagesfolder="admin/language"><languagetag="en-GB">en-GB/en-GB.com_helloworld.ini</language><languagetag="en-GB">en-GB/en-GB.com_helloworld.sys.ini</language></languages></administration></extension>

Content is available under Joomla! EDL unless otherwise noted.Joomla!® is a registered trademark of Open Source Matters, Inc.If you are experiencing technical issues with this website, please report it
.
Notice a content problem? Create an account
and fix it.