【问题标题】:Zend fw, custom validation errorsZend fw,自定义验证错误
【发布时间】:2010-10-18 11:05:04
【问题描述】:

我正在使用 Zend_Form 创建一个网站。在我的控制器中,我为视图分配了一个表单对象。在视图中,我使用以下代码来渲染表单:

<?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 做到这一点。有人知道从哪里开始吗?

谢谢,

马丁

【问题讨论】:

    标签: validation zend-framework forms


    【解决方案1】:

    您应该可以通过请求 getErrors(); 来查看它。在 Zend_Form 对象上。

    它将返回一个错误数组,其中键是字段名称 返回类似的东西。

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

    您也可以调用 $form->getElements() 并遍历每个元素以查看哪个元素抛出错误

    【讨论】:

    • 没错,但问题是我的字段名称是英文,而我的网站是荷兰文。显示这些英文字段名确实对用户不友好。
    • 是的,字段名称是输入/选择/文本区域的 name="" 值,您必须向元素添加自定义错误(使用荷兰语)或在查看类似 "if ($fieldname == 'username') { echo "error on dutch" }" 的视图 您还可以在表单中添加 Zend_Translate 对象以处理错误翻译。
    • 我确实尝试使用 Zend_Translate 适配器来提供翻译后的错误消息。这行得通,但这仅提供了一种翻译消息本身的方法(例如“此字段为空”=>“Dit veld is leeg”),但它没有提供一种为字段添加名称的方法?
    • 您可以迭代所有元素并调用 $element->isValid() 来检查它们,然后使用 $element->getLabel() 。 “:”。内爆("," $element->getErrorMessages()); .或者你可以使用自定义标准装饰器。
    猜你喜欢
    • 1970-01-01
    • 2011-06-15
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2017-09-10
    • 1970-01-01
    相关资源
    最近更新 更多