前面已经简单介绍过ThinkPHP视图引擎,这些标签处理机制类似于JSP tag,使用XML作为标签的渲染方式,开发人员可以方便地在网页中嵌入XML标签,然后由ThinkPHP视图引擎解释成标准的PHP代码。ThinkPHP的视图引擎之所以高效,主要体现在它的标签扩展性。ThinkPHP的视图标签扩展性够完美地与后台控制器代码相结合,例如在Smarty中使用函数功能,首先需要在后台PHP代码注册,而在ThinkPHP中完全不需要,如以下代码所示。......
2025-09-30
使用create方法创建数据系统会自动进行过滤和检测,但也可以单独对表单中的单一字段进行检测和过滤。系统对单个表单字段的处理主要有字段过滤、字段只读限制、字段类型检测等。下面分别进行介绍。
1.字段过滤
字段过滤可以对表单中的单个字段进行过滤,极大地方便了表单数据处理。例如在数据插入前,开发人员可以对表单中的字段进行敏感字检测,在获取数据时可以对单个字段中的数据进行替换。字段过滤只需要在自定义模型中定义$_filter属性即可(字段过滤需要继承于AdvModel模型)。$_filter属性格式如下。
这里所说的过滤字段是指数据表中的字段,如果表单中的字段与数据表中的字段不一样,则需要做字段映射(字段映射可参考本书7.1.1节)。写入前处理函数和读取前处理函数是指在common.php中自定义的函数。最后一个选项是指是否传入所有表字段,默认只传入过滤字段中定义的字段,可设置的选项有true及false。下面通过一个示例演示$_filter属性的使用。
仍然以tpk_article数据表为例,如果需要在数据插入前,对content字段进行额外处理。当content字段中存在URL字符串时,禁止用户输入完整的URL代码,而是只能输入一个字符串,系统自动将字符串转换成标准的HTML代码。同时在读取时系统会对编辑器中特定的UBB代码进行转换,以达到显示图片的目的。
首先让ArticleModel继续于AdvModel高级模型,然后定义$_filter属性,如以下代码所示。
如上述代码所示,contentWriteFilter函数是写入前的处理函数;contentReadFilter函数用于处理读取content字段前的处理函数,这2个处理函数均在Common/common.php中定义,代码如下所示。
最后就可以在动作中进行处理了。处理过程不需要开发人员干涉,系统会自动进行匹配,完成字段过滤的整个过程。如以下代码所示。(https://www.chuimin.cn)
读者可以在表单中输入url字符串,系统将自动转换成HTML代码。例如http://localhost转换成的html代码为<a href=http://localhost>http://localhost</a>。这里只是作为一个演示,事实上字段过滤在实际应用开发中是非常灵活的,可以应用在任何数据处理场合。
2.字段只读限制
为了使数据更加严谨,开发人员可以单独对特定的字段进行只读限制。被限制为只读的字段将不能接收数据插入、修改、删除指令,只能用于显示数据。只读字段通常用于会员中心数据的处理以及XML、SOAP等只作查询的场合。定义只读字段需要在自定模型中进行定义,并且需要继承AdvModel高级模型,如以下代码所示。
定义完只读字段后,然后对title、add_user、add_tim字段值进行增、删、改操作时,系统将停止执行。
3.字段类型检测
PHP是一种弱类型脚本语言,对变量的类型适配是自动的,也就是说PHP对变量的类型不做强制区分,这点与C、Java等强类型语言有着明显的区别。但是数据表字段对类型是有严格限制的,所以为了提高安全性,可以对数据字段进行强类型检测。
要开启字段类型检测,需要在配置文件中开启DB_FIELDTYPE_CHECK选项(默认false)。开启后,系统会强制检测数据表字段与数据变量之间的类型关系。通常情况下,字段类型检测用于数据的增加和修改,以达到完善数据的目的。
相关文章
前面已经简单介绍过ThinkPHP视图引擎,这些标签处理机制类似于JSP tag,使用XML作为标签的渲染方式,开发人员可以方便地在网页中嵌入XML标签,然后由ThinkPHP视图引擎解释成标准的PHP代码。ThinkPHP的视图引擎之所以高效,主要体现在它的标签扩展性。ThinkPHP的视图标签扩展性够完美地与后台控制器代码相结合,例如在Smarty中使用函数功能,首先需要在后台PHP代码注册,而在ThinkPHP中完全不需要,如以下代码所示。......
2025-09-30
要使用Symfony开发Web应用,PHP环境必须为5.0.1以上,并且安装了Pear扩展库。接来下将进入安装Symfony的步骤。pear upgrade pear现在就可以获取Symfony了。图4-10 symfony频道可用的包如图中所示,当前的Symfony最新的版本为1.4.17,当然这指的是正式包,实际上可用的2.0测试包已经可供下载了。接下来将进入Symfony的安装阶段,请确保当前网络环境稳定可靠。图4-11 pear安装Symfony安装完成后可以在xampp\php\pear目录下看到Symfony文件夹,如图4-12所示。图4-12 Symfony安装成功测试Symfony是否可用,最直接的办法就是创建一个项目。......
2025-09-30
调用系统变量与调用自定义变量不同,调用系统变量需要使用$Think关键字,如表示使用GET变量接收URL传参。表6-1 系统内置的变量(续)为了便于操作,系统允许开发人员将$Think关键字隐藏,如
2025-09-30
Zend Studio在6.0之前采用独立安装包进行发行。下面分别对经典的Zend Studio 5.5和成熟的Zend Studio 8.0进行讲解,方便读者选择。Zend Studio 8.0是Zend推出的商业套件,开发者或企业必须要购买商业许可才能进行使用。......
2025-09-30
CodeIgniter简称CI,是国内使用最广泛的PHP MVC框架之一。CodeIgniter从MVC入口文件到框架核心代码,均经过严谨的设计。CodeIgniter定位于小型的网站应用开发,但并不代表CodeIgniter不适用于大型网站开发。CodeIgniter MVC处理流程如图4-19所示。CodeIgniter灵活高效的MVC处理机制,无论在国内还是国外都得到了广泛的PHP程序员支持。接下来将以CodeIgniter 2.1.2为基础,介绍CodeIgniter的MVC处理流程,让读者对CodeIgniter有一个更加直观的认识。......
2025-09-30
Zend Framework是以组件的方式进行代码构建的,组件的概念类似是Java中包的概念。Zend Framework强大之处就在于提供了非常多的实用组件,开发人员可以方便地使用Zend Framework提供的种类组件,轻易地实现原本需要复杂设计的功能。常用Zend_Filter组件类如下。Zend_Filter组件所包含的类如图4-5所示。图4-7 Zend_Mail组件5.Zend_Db_AdapterZend_Db_Adapter是一个操作数据库的组件,能够实现简洁高效的数据库操作。......
2025-09-30
Eclipse是IBM的一个商业项目,2001年11月起IBM将Eclipse贡献给开源社区,从此奠定了Eclipse的地位。Eclipse通过PDT插件来提供PHP开发支持,Eclipse PDT能够让编写PHP变得简单和高效,下面将介绍Eclipse PDT的安装和使用。Eclipse PDT的安装有两种方式,一种是直接通过Eclipse的扩展进行安装;另一种是下载带PDT插件的Eclipse。下面将以Eclipse3.5.2作为基础,讲解Eclipse PDT插件的安装过程。如果下载带PDT插件的Eclipse,只需要双击Eclipse启动程序即可,此时Eclipse就提供了完美的PHP编程支持。......
2025-09-30
接下来将使用CodeIgniter实现一个简单的新闻列表,用户点击列表中的新闻标题将会进入新闻的正文页面,通过该例子演示CodeIgniter实现MVC开发的流程。在CodeIgniter中,控制器命名规则比较灵活,它不需要加前缀或后缀,一个普通的文件即可。......
2025-09-30
相关推荐