0

朝、

Zend Form Validator に奇妙な問題があります。エラーメッセージを出力したいときは、ArrayArray.

私のコード:

<?php

// Load sms request form
$smsRequestForm = new Application_Form_Sms_Request();

// Form posted?
if ($this->getRequest()->getMethod() != 'POST') {
    // Show the form
    $this->view->showForm = true;            
    $this->view->smsRequestForm = $smsRequestForm;
} elseif (!$smsRequestForm->isValid($_POST)) {
    // Show the form and output the validation errors
    $this->view->showForm = true;            
    $this->view->smsRequestForm = $smsRequestForm;

    // Loop through the error messages
    foreach($smsRequestForm->getMessages() as $message)
    {
        echo $message;
    }
} else {

}

ドキュメントを読んで、echo $message; であることを知りました。エラーメッセージをプレーンテキストで出力する必要があります。

foreach($smsRequestForm->getMessages() as $key => $message); を実行します。私の問題を解決しません。

私が間違っていることを誰かが知っていますか?

前もって感謝します!

4

1 に答える 1

2

ここで間違っていgetMessages()ます。たとえば、次のような配列を返します。

array(2) {
  ["username"] => array(2) {
    ["stringLengthTooShort"] => string(33) "'' is less than 3 characters long"
    ["alphaStringEmpty"] => string(21) "'' is an empty string"
  }
  ["password"] => array(1) {
    [0] => string(7) "Message"
  }
}

したがって、次のように各フィールドのエラーを取得するには、それを反復処理する必要があります。

foreach($form->getMessages() as $fields)
{
    foreach ($fields as $error) {
        echo $error;
    }
}

詳細については、マニュアルを参照してください。

getMessages()は、要素名 / メッセージの連想配列を返します (ここで、messages はエラー コード / エラー メッセージのペアの連想配列です)。

マニュアルで読んだことは、 を使用して要素メッセージを取得する方法だと思います$messages = $element->getMessages();。1 つの要素に対して返されるエラー メッセージは、エラー コードとエラー メッセージのペアの連想配列です。

于 2012-04-16T08:54:34.897 に答える