2009-01-05 55 views

回答

5

您是否在使用Zend_Form表单?我倾向于在表格中为每个Zend_Form_Element应用验证器。这就是我要做的事:

class Form_Login extends Zend_Form 
{ 
    public function init() { 
     $this->setMethod('post'); 

     $validator = new Zend_Validate_Regex('([A-Za-z0-9]+)'); 
     $validator->setMessage(
     'Your username can only contain letters, numbers and underscores (_).'); 

     $username = new Zend_Form_Element_Text('username'); 
     $username->setLabel('Your Username'); 
     $username->setDescription('The username you use to login'); 
     $username->setAllowEmpty(false); 
     $username->setRequired(true); 
     $username->addValidator($validator); 

     $submit = new Zend_Form_Submit('login'); 
     $submit->setLabel('Login'); 

     $this->addElements(array($username, $submit)); 
    } 
} 

Customising error messages

然后在你的控制器:

// $form is an instance of the extended Zend_Form 
if (!$form->isValid()) { 
    $validator->getMessages() 
    // flashMessenger helpers or just simple view appends 
} 

我的理想的实现将保持控制器的外部验证,并允许验证“确认密码”字段和文件上传

我已经在参考指南中看到确认密码验证器的提及(但现在找不到它们,典型的),但应该很容易在Google上找到它。

文件上传肯定会要求您write a custom validator

0

是的,这是推荐的数据验证方式。谢谢!我希望看到更多的例子。

我还算是一个控制狂,当涉及到HTML,所以我尽量远离Zend_Form的路程。我知道它可以大量定制,但我记得在某个时候遇到了障碍,所以我决定坚持使用纯HTML格式。

+0

我和Zend_Form的装饰边有点麻烦(现在仍然如此),但我刚刚学会了造型DL/DD/DT的正确:) – Ross 2009-01-05 16:11:02

2

也许你应该有一个look at。 Matthew Weier O'Phinney(Zend Fraework核心开发人员之一)展示了一种需要习惯的方法 - 但值得一看。

0

具体地为一个“确认密码”类型的验证,检查出ZYM框架(Zend框架扩展名)。它有一个内置的验证器来达到这个确切的目的。尝试使用Zym_Validate_Confirm类。

相关问题