Zend Form: проверка зависимого поля - PullRequest
0 голосов
/ 11 сентября 2011

У меня есть форма с двумя полями выбора: страна и город, город в зависимости от выбранной страны.Обратите внимание, что поле города заполняется динамически, когда страна выбирается с помощью Ajax.

До сих пор я расширил Zend_Form_Element_Select overriding isValid() для поля выбора города, и я буду использовать аргумент $context дляполучить выбранную страну и проверить, является ли город действительным (для этой страны).

Я хочу пропустить проверку города, если проверка страны не удалась.Например, кто-то может ввести неверное значение в поле страны (и проверка страны не удастся), и проверка моего города не должна выполняться, и этот запрос не выполняется в БД, он просто не должен проходить проверку.

Как мне этого добиться?

1 Ответ

3 голосов
/ 11 сентября 2011

Переопределите методы isValid() и setDefaults() в классе Form, чтобы заполнить элемент city, когда элемент country установлен.

function isValid($data) {
    if (isset($data['country'])) {
        $this->populateCity($data['country']);
    }
    return parent::isValid($data);
}

function setDefault($name, $value) {
    if ('country' === $value) {
        $this->populateCity($value);
    }
    return parent::setDefault($name, $value);
}
...