Как добавить сообщение об ошибке на основе значений двух полей с помощью Zend_Validate_Db_NoRecordExists - PullRequest
0 голосов
/ 30 мая 2020

У меня есть страница с двумя полями «Время начала» и «Время окончания».

$start_time = new Zend_Form_Element_Select("start_time");
$start_time->setRegisterInArrayValidator(false);  
$start_time->addValidator(
    new Zend_Validate_Db_NoRecordExists(
        array(
            'table'=>'main_times',
            'field'=>'start_time',
            'exclude'=> 'id != "' . Zend_Controller_Front::getInstance()->getRequest()->getParam('id') . '" and isactive = 1',    
        )
    )
);
$start_time->getValidator('Db_NoRecordExists')->setMessage('Start Time already exists.'); 
$end_time = new Zend_Form_Element_Select("end_time");
$end_time->addMultiOptions(array(''=>'Select End Time'));
$end_time->setRegisterInArrayValidator(false);
$end_time->addValidator(
    new Zend_Validate_Db_NoRecordExists(
        array(
            'table'=>'main_times',
            'field'=>'end_time',
            'exclude'=>'id != "' . Zend_Controller_Front::getInstance()->getRequest()->getParam('id') . '" and isactive = 1',    
        )
    )
);
$end_time->getValidator('Db_NoRecordExists')->setMessage('End Time already exists.'); 

Здесь, как вы видите, я проверяю поля «Время начала» и «Время окончания» отдельно .

Теперь я хочу показать сообщение об ошибке типа «Временной интервал уже существует», если я попытаюсь создать запись с тем же временем начала и окончания.

Например:

Первый раз: я создал запись с «Время начала» как «14:00» и «Время окончания» как «15:00». Теперь временной интервал - 14:00 - 15:00

Второе время: я создал запись с «Время начала» как «14:00» и «Время окончания» как «17:00». Теперь временной интервал - 14:00 - 17:00

Третье время: я создал запись с «Время начала» как «14:00» и «Время окончания» как «15:00». Теперь временной интервал 14:00 - 15:00. Теперь я должен получить сообщение об ошибке «Временной интервал уже существует». И форма не должна быть отправлена.

Как я могу реализовать это в Zend с помощью Zend_Validate_Db_NoRecordExists (или) есть другой способ сделать это?

...