2012-04-20 70 views
0

在我的控制器中,我有一些数据集,有些值不能从客户端发送(这不是我的逻辑中的错误),而且我也没有修改数据库中的相应字段。但是如果值是空字符串,我想抛出一个错误。Zend框架验证:验证空字符串并且不验证空值

我该如何使用标准的验证器来做到这一点?

实施例:

我有表用户2名的字段:用户名和密码。用户在他的个人资料中可以更改他们中的任何一个或两者。配置文件是用ExtJS 4编写的,代理配置了选项writeAllFields: false,因此客户端只向服务器发送修改后的字段。

在服务器端,如果,例如,用户名不经

  • $this->_request->getPost('username')
  • $this->_getParam('username')

...还是其他什么东西(它为空)发现,我不想验证它并在数据库中修改它。

但是如果用户在用户名字段中键入了一个空字符串,我想验证它并向用户显示一个错误,如“用户名不能为空”。

这是如何实现的?

+0

给我们一个具体的例子,以便我们可以帮助你。 – Liyali 2012-04-20 14:59:32

+1

听起来可能是'NotEmpty'验证器或'setRequired'是你正在寻找的。 – drew010 2012-04-20 17:15:03

+0

你能写一些例子吗? – 2012-04-21 04:05:25

回答

0

就我个人而言,我会过滤输入,然后验证它。但是,为了实现自己的目标,这可能会做的伎俩,其直接从docs.

$valid = new Zend_Validate_NotEmpty(); 
$value = ''; 
$result = $valid->isValid($value); 
// returns false 

如果你使用Zend表单创建表单适用什么drew010提到。在这种情况下,如果未提供输入,则将元素本身的setRequired()验证器设置为true将向用户显示错误。如果你不使用Zend Form,那么上面应该指出你在正确的方向。