开发者

Zend Form: Dependant field validation

I have a form with two select boxes: country and city, city depending on the selected country. Note that the city field is populated dynamically when a country is selected using Ajax.

So far I extended Zend_Form_Element_Select overriding isValid() for the city select box, and I'll use the $context argument to get the selected country and check if the city is valid (for that country).

I want to skip city validation if the country validation fails. For example someone can inject a bad value into the country field (a开发者_C百科nd the country validation will fail), and my city validation shouldn't take place and don't do that query on db, it simply shouldn't pass the validation.

How can I achieve this?


Override the isValid() and setDefaults() methods in your Form class to populate the city element when the country element is set.

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);
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜