我有一个带有两个选择框的表单:国家/地区和城市,城市取决于所选国家/地区。 请注意,使用Ajax选择国家/地区时会动态填充城市字段。
到目前为止,我已将Zend_Form_Element_Select
覆盖isValid()
覆盖城市选择框,我将使用$context
参数获取所选国家/地区并检查该城市是否有效(适用于那个国家)。
如果国家/地区验证失败,我想跳过城市验证。例如,有人可以向国家/地区字段注入错误的值(并且国家/地区验证将失败),并且我的城市验证不应该发生并且不在db上执行该查询,它根本不应该通过验证。 / p>
我怎样才能做到这一点?
答案 0 :(得分:3)
覆盖Form类中的isValid()
和setDefaults()
方法,以便在设置country元素时填充city元素。
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);
}