教程栏目

joomla中文网出品的官方教程

joomla服务器端的校验比较容易,官网并没有给出相应的实例说明。但依据对PHP编程的经验,服务器端的校验就是在数据进行存储到数据库之前的对数据进行校验。这就是所谓的服务器端的校验,用PHP代码来完成。

 

很清楚,我们需要做的就是明白后台存储数据的流程,并且在存储之前进行校验。Joomla后台数据的操作一般是通过JTable这个类来完成的。而在JTable这个类中有一个方法叫做check方法。具体的使用如下:

class TableZmax extends JTable
{
	/** @var int primark key */
	
	function __construct(& $db)
	{
		parent::__construct('#__zm_zmax' ,'id' ,$db);
	}

		function check()
	{
		
		if(!$this->checkEmail(trim($this->email)))
		{
			$this->setError(JText::_("COM_ZMAX_EMAIL_NOT_EXIST_IN_DB").":".$this->email);
			return false;
		}
		
		return true;
}

 在你的Table中增加check方法,然后在这个方法中对你需要校验的字段的进行校验。当然,校验的代码得你自己写。如果校验成 功,则返回true.如果失败那么就调用$this->setError();向用户输出一个提示功能,并且返回false.这样就表单就不会提交 了。

系统在提交表单的过程中,会自动的调用JTable的check方法。因此在这里进行校验是最好的时机。

于2014-07-19日改: 上面虽然的代码虽然也能达到在服务器端校验的目的,但是在仔细的阅读了joomla官网提供的例子的时候,感觉这种方法并不太好。下面推荐使用一种更加友好,且独立性强的方法来实现服务器端校验。

 


在服务器端校验表单

在服务器端校验表单字段是通过继承JControllerForm类来实现的。首先需要在表单的XML文件中中指定服务器端校验需要用的文件。一般这个文件放在/admin/models/rules/下面。

下面是一段典型的代码:

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
 
// import Joomla formrule library
jimport('joomla.form.formrule');
 
/**
 * Form Rule class for the Joomla Framework.
 */
class JFormRuleGreeting extends JFormRule
{
        /**
         * The regular expression.
         *
         * @access      protected
         * @var         string
         * @since       2.5
         */
        protected $regex = '^[^0-9]+$';
}

 注意:这个类里面并没有功能函数。而只有一个成员变量。这是因为我们扩展自JFormRule(/libriies/joomla/form/rule.php),在这个类中实现了我们需要的功能。因此我们的子类中只需要一个正则表达式就行了。

 

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前

第1章 Joomla入门教程

第3章 C计划

第5章 E计划

第6章 H计划

第7章 G计划

第9章 运行环境

第11章 主从与集群

第12章 模块开发

第13章 插件开发

第14章 j2.x组件开发教程

第15章 页面定制教程

第16章 页面构造器