跨境电商
经验交流分享

Magento表单验证(二):服务器端Zend_Validate验证

在上一篇文章《Magento表单验证(一):客户端Prototype验证》中介绍了通过Prototype进行表单的客户端验证方法。从用户体验角度来说,通过在客户端校验客户输入,并提示客户输入内容的问题非常不错。但是从安全角度,特别是像Magento这种B2C网店程序来说,客户端验证就不太够用了。本文就介绍下如何对表单提交的数据通过Zend_Validate类进行服务器端的验证。

如下代码,表单提交之后,会进入到postAction()方法,首先我们获取到提交的数据,然后实例化ruiwant_consult/question模型,并将表单提交的数据set到模型中。

[php]
public function postAction()
{
$data   = $this->getRequest()->getPost();
$questionModel     = Mage::getModel(‘ruiwant_consult/question’)->setData($data);

$validate = $questionModel->validate();
if ($validate === true) {
//进行保存操作
}
}
[/php]

接下来,可以看到调用了validate()方法,该方法在模型中定义,片段如下。可以看到,我们调用了Zend_Validate的静态方法is。对输入的每个消息都进行相应的格式验证。如果没有错误返回true,继续操作,如果有错误,则记录到$errors数组中,并set到session里然后返回上一个页面并显示错误消息给客户。

[php]
public function validate()
{
$errors = array();
$hlp = Mage::helper(‘ruiwant_consult’);
if (!Zend_Validate::is($this->getQuestion(), ‘NotEmpty’)) {
$errors[] = $hlp->__(‘Product Question can\’t be empty’);
}
if (!Zend_Validate::is($this->getEmail(), ‘EmailAddress’)) {
$errors[] = $hlp->__(‘Please enter a valid email address.’);
}
if (empty($errors)) {
return true;
}
return $errors;
}

[/php]

这里就不多介绍Zend_Validate了,可以去Zend官方的文档查阅相关的方法。

Zend Framework1 API传送门:http://framework.zend.com/apidoc/1.12/

Zend_Validate文档:http://framework.zend.com/manual/1.12/en/zend.validate.introduction.html

赞(0)
未经允许不得转载:锐想 » Magento表单验证(二):服务器端Zend_Validate验证
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

锐想电商 - 跨境电商经验交流分享

锐想无限