0

フォームを検証しようとしています。フォームは 2 つの日付を受け入れて比較します。以下は、2 つの日付を検証するために検証するための関数です。

 public function isValid($data) {
        if ($isValid = parent::isValid($data)) {
            $checkin = new Zend_Date($data['checkin'], null, 'en_US');
            $checkout = new Zend_Date($data['checkout'], null, 'en_US');

            if ($checkin->isLater($checkout)) {
                 $this->checkin->addError('Dates are incorrect');
            }

            if ($checkout->isEarlier($checkin)) {
                 $this->checkin->addError('Dates are incorrect');
            }


        }
        return $isValid;
    }

これを実行すると、エラーメッセージが表示されます

500 Application error
exception 'Zend_Locale_Exception' with message 'No date part in 'Select Date' found.'

私が死ぬとき(); $isValid 変数は 1 (true) に設定されているので、そこまで到達することがわかります。

$checkin および $checkout 変数は、何らかの理由で設定されていません。

$data 変数には配列が存在するため、フォームからデータを取得していることがわかります。以下は var_dump(); です。$data 変数の場合:

array(12) { ["controller"]=> string(7) "booking" ["action"]=> string(6) "search" ["module"]=> string(7) "default" ["checkin"]=> string(11) "Select Date" ["checkout"]=> string(11) "Select Date" ["district"]=> string(1) "0" ["adults"]=> string(1) "1" ["children"]=> string(1) "0" ["quantity"]=> string(1) "1" ["findroom"]=> string(1) "1" ["x"]=> string(3) "151" ["y"]=> string(2) "29" } 
4

1 に答える 1

0

私はこれを修正しました。問題は、文字列を日付として検証しようとしていたことでした。今日の日付をデフォルトとして追加しただけで、完全に機能しました!

于 2013-09-09T15:55:51.793 に答える