22.5.4. 使用 Metacommands 来控制过滤器或校验器规则 除了声明从字段到过滤器或校验器的映射,你可以在数组声明中指定一些 "metacommands" ,开控制一些 Zend_Filter_Input 的可选的行为。 Metacommands 在给定的过滤器或校验器数组值里以字符串索引条目的形式出现。 22.5.4.1. The FIELDS metacommand 如果过滤器或校验器的规则名和需要应用规则的字段名不同,可以用 'fields' metacommand 来指定字段名。 可以用类常量 Zend_Filter_Input::FIELDS 而不是字符串来指定这个 metacommand。
Browsing the archives for the zend tag
这里我们假设有一个登录入口,有三个表单元素,分别为用户名(username),密码(password)和验证码(captcha). 要求如下: 所有元素去掉两边的空格 用户名要为数字和字母 验证码为数字类型(这里为了验证为空的情况下,注释掉了这块功能.启用的话,如果输入的是非数字的话,会直接提示不能为空.)
23.6. Zend Framework 带有的标准表单元素 Zend Framework 带有的具体元素类涵盖了大部分的 HTML 表单元素。其中大部分当装饰元素时,指定了特定的视图助手来用,但有一些还提供了另外的功能。下面是这些类的列表,还有它们提供的功能的描述。 23.6.1. Zend_Form_Element_Button 用来生成 HTML 按钮元素, Zend_Form_Element_Button 继承 Zend_Form_Element_Submit,并派生它的定制功能。它为装饰指定 'formButton' 视图助手。 像提交元素一样,它使用元素的标签作为元素的值来显示,还句话说,通过设置元素的值来设置按钮上的文字。如果有翻译适配器,标签将显示翻译后的文字。
23.4.10. 定制表单 一个使用基于配置的表单的替代方法是继承 Zend_Form 类,有若干优点: 可以容易进行单元测试来确保校验和解析如愿执行。 精细地控制每个元素。 重使用表单对象,最大化可移植性(不需要跟踪配置文件)。 实现定制功能。 最典型的用例是使用 init() 方法来设置指定的表单元素和配置:
23.4.8. 方法 下面是 Zend_Form 的方法大全,按类分组: 配置和选项: setOptions(array $options) setConfig(Zend_Config $config) 插件加载器和路径: setPluginLoader(Zend_Loader_PluginLoader_Interface $loader, $type = null) getPluginLoader($type = null) addPrefixPath($prefix, $path, $type = null) addPrefixPaths(array $spec) addElementPrefixPath($prefix, $path, $type = null) addElementPrefixPaths(array $spec) addDisplayGroupPrefixPath($prefix, $path) 元数据: setAttrib($key, $value) addAttribs(array $attribs) setAttribs(array $attribs) getAttrib($key) getAttribs() removeAttrib($key) clearAttribs() setAction($action) getAction() setMethod($method) getMethod() setName($name) getName() 元素: addElement($element, $name [...]
23.3.9. 定制元素 通过继承 Zend_Form_Element 类,你可以生成自己的定制元素,这样做的原因是: 共享通用的校验器和/或过滤器的元素 有定制装饰器功能的元素 有两个方法一般用来扩展元素:init() 可为元素添加定制的初始化逻辑;loadDefaultDecorators() 可用于设置一个用于元素的缺省装饰器的列表。 用例子来说明,你在一个表单里生成的所有文本元素需要用 StringTrim 来过滤、用通用的规则表达式来校验,并且你想用你生成的定制的装饰器来显示它们,'My_Decorator_TextItem'。另外,你有许多想指定的标准属性,包括 'size'、 'maxLength' 和 'class'。你可以定义这样的元素如下:
Zend_Form_Element 处理广泛的属性和元素元数据,基本属性包括: name: 元素名,使用 setName() 和 getName() 访问器。 label: 元素标签,使用 setLabel() 和 getLabel() 访问器。 order: 在表单中出现的元素的索引,使用 setOrder() 和 getOrder() 访问器。 value: 当前元素的值,使用 setValue() 和 getValue() 访问器。 description: 元素的描述,常用于提供工具提示或 javascript 上下文提示,描述元素的意图,使用 setDescription() 和 getDescription() 访问器。 required: 当执行表单校验时,指示元素是否必需的标志,使用 setRequired() 和 getRequired() 访问器,缺省为 false。 allowEmpty: 指示可选的元素是否应该校验空值的标志,当为 true,并且要求的标志为 false,空值就不传递给校验器链,并假定为 true。使用 setAllowEmpty() 和 getAllowEmpty() 访问器,缺省为 true。 autoInsertNotEmptyValidator: 当元素是必需时,指示是否插入一个 'NotEmpty' 校验器。缺省地,这个标志为 [...]
自动加载的原理是Zend_Application实例了Zend_Loader_Autoloader使其调用了 spl_autoload_register(array(__CLASS__, 'autoload')); 这样如果找不到的类就会调用此对象的autoload方法进行处理. 一个名称空间可以有多个加载器,迭代找出符合的自定义加载器后,其余的就不会使用了,一般我们只会针对一个名称空间注册一个自定义加载器或者直接使用默认的加载器. 注册名称空间方式分为以下两种. 1.只注册了空间的前辍,没有指定任何加载器,注册方法为registerNamespace('空间名称'). 2.注册了空间前辍,并指定了加载器.注册方法为pushAutoloader(加载器,'空间名称')或unshiftAutoloader(加载器,'空间名称')两个方法的区别是push将加载器放到指定空间名称的加载器队列之后,unshift是之前.
首先在安装所有软件之前新系统ports,方法如上一贴
然后 再进行下面的工作
1)安装mysql
#cd /usr/ports/databases/mysql51-server
#make WITH_CHARSET=uft8(我选择了这个,情况自己定) WITH_XCHARSET=all install clean
#cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
#rehash
!!!—–WITH_CHARSET=utf8(我选择了这个,情况自己定,可以使用gbk)
# mysql_install_db –user=mysql ##初始化mysql
#/usr/local/bin/mysqld_safe & ##启动mysql
#/usr/local/bin/mysqladmin -u root password ‘newpass’ ##修改root密码,newpass是你需要改的密码
【翻译说明】这是Zend Framework的非常经典的入门教程,它的原作者Rob Allen是《Zend Framework In Action》一书的作者。在翻译这个版本之前,只知道Jason Qi 翻译的0.9版(实际内容是关于Zend Frame 0.6版本的)。因为自0.9版以来Zend Framework已经有了很大的变化,教程也有了比较大的改变。因此才决定重新翻译一次。翻译完成后才发现Jason Qi 翻译的最新版本已经是1.4.3了。但毕竟已经翻译完成,而且Jason翻译的还不是最新版本,因此还是决定将这个版本的翻译发布出来。因此,实际上这个翻译版本是根据英文版v1.5.2完全重新翻译的。