2010-10-18 95 views
1

我正在用Zend_Form创建一个网站。在我的控制器中,我将一个表单对象分配给视图。在视图中,我使用下面的代码来渲染表单:Zend FW,自定义验证错误

<?php if (isset($this->success)): ?> 
    <div class="message success"><p>Thanks!</p></div> 
<?php elseif (sizeof($this->form->getMessages()) > 0): ?> 
    <div class="message success"><p>Something went wrong..</p></div> 
<?php endif; ?> 

<form> 
    <label>Name:</label> 
    <?php echo $this->form->name; ?> 

    <label>E-mail:</label> 
    <?php echo $this->form->name; ?> 
</form> 

到现在为止,检查是否有表单错误是不够好这种方式。但我的客户问我是否也可以指定不正确的字段。所以,例如:“警告:你忘了填写你的名字”。我真的不知道如何与Zend做到这一点。有谁知道从哪里开始?

感谢,

的Martijn

回答

0

您应该能够通过请求getErrors看到它();在Zend_Form对象上。

它将返回一个错误数组,其中的键是字段名称 返回类似这样的内容。

array(
'fieldname' => array('error1', 'error2'), 
'username' => array('errors') 
); 

你也可以调用$形式 - >的getElements()和遍历每个元素,看看哪一个是抛出错误

+1

这是事实,但问题是,我的字段名是英语,我的网站是在荷兰。显示这些英文字段名称将会非常不友好。 – Martijn 2010-10-18 11:12:26

+0

是的字段名称是输入/选择/文本区域的名称=“”值,您必须向元素(在荷兰语中)添加自定义错误或在视图内创建条件逻辑,例如“if $ fieldname =='username'){echo“荷兰语错误”}“您还可以将Zend_Translate对象添加到窗体以处理错误翻译。 – 2010-10-18 11:16:21

+0

我曾尝试使用Zend_Translate适配器来提供已翻译的错误消息。这很有效,但它只提供了一种翻译消息本身的方法(例如“This field is empty”=>“Dit veld is leeg”),但它不提供一种为该字段添加名称的方法? – Martijn 2010-10-18 11:37:30