Zend framework zend_形式有效始终为假

Zend framework zend_形式有效始终为假,zend-framework,zend-form,Zend Framework,Zend Form,我为使用Zend 1的站点编写代码。 我想在zend中重写旧的管理界面,但我的表单无法验证 我将在这里发布表单、验证代码和调试输出 表格: 其他字段(我在这里只发布了1个,第2个就是这样): 代码: 输出: Array ( [_street] => sdvdsvsv [_zip] => 111111 [_city] => sdfgsf [_lat] => 1.0 [_lng] => 2.1 [_hidden] => 0 [country_id] => 1

我为使用Zend 1的站点编写代码。 我想在zend中重写旧的管理界面,但我的表单无法验证

我将在这里发布表单、验证代码和调试输出

表格:

其他字段(我在这里只发布了1个,第2个就是这样):

代码:

输出:

Array
(
[_street] => sdvdsvsv
[_zip] => 111111
[_city] => sdfgsf
[_lat] => 1.0
[_lng] => 2.1
[_hidden] => 0
[country_id] => 1
[region_id] => 3
[submit] => Senden
[csrf] => d18dfed9d26e28d7a52aa4983b00667e
)
Array
(
)
Array
(
)
Array
(
[_street] => Array
    (
    )

[_zip] => Array
    (
    )

[_city] => Array
    (
    )

[_lat] => Array
    (
        [0] => notFloat
    )

[_lng] => Array
    (
        [0] => notFloat
    )

[_hidden] => Array
    (
    )

[submit] => Array
    (
    )

[csrf] => Array
    (
    )

[region_id] => Array
    (
    )

[country_id] => Array
    (
    )

)
在我看来,验证失败了,但我不知道为什么。 这些值出现在$\u POST中,但表单未验证。 我甚至尝试使用isValidPartial(),但结果相同。 我认为我在做一些根本错误的事情。 一个暗示就好了


提前输入y尝试在
纬度和
经度中输入
逗号而不是

1,0
2,1
而不是
1.0
2.1


我认为这是关于您的验证器的一个问题

您是对的,问题是,数据库的float为fieldtype,因此内容没有保存。解决方案:我将其放在引导程序中,因此它在我的表单中没有“LocalizedToNormalized”-过滤器等:
$locale=new Zend_locale()$locale->setLocale('en_US')
class Form_Admin_Elements_CountrySelect extends Zend_Form_Element_Select {
public function init() {
$countrymapper = new Mapper_Country();
    $this->addMultiOption(0, 'Please select...');
    foreach ($countrymapper->fetchAll() as $country) {
        $this->addMultiOption($country->getId(), $country->getName());
    }
$this->setLabel("Land:");
}
}
$addForm = new Form_Admin_Address_Neu();
$regionselect = new Form_Admin_Elements_RegionSelect('region_id');
$regionselect->setRequired(true);
$addForm->addElement($regionselect);
$countryselect = new Form_Admin_Elements_CountrySelect('country_id');
$countryselect->setRequired(true);
$addForm->addElement($countryselect);

if ($addForm->isValid($_POST)) {
...
} else {
print_r($_POST);
print_r($addForm->getErrorMessages());
print_r($addForm->getCustomMessages());
print_r($addForm->getErrors());
}
Array
(
[_street] => sdvdsvsv
[_zip] => 111111
[_city] => sdfgsf
[_lat] => 1.0
[_lng] => 2.1
[_hidden] => 0
[country_id] => 1
[region_id] => 3
[submit] => Senden
[csrf] => d18dfed9d26e28d7a52aa4983b00667e
)
Array
(
)
Array
(
)
Array
(
[_street] => Array
    (
    )

[_zip] => Array
    (
    )

[_city] => Array
    (
    )

[_lat] => Array
    (
        [0] => notFloat
    )

[_lng] => Array
    (
        [0] => notFloat
    )

[_hidden] => Array
    (
    )

[submit] => Array
    (
    )

[csrf] => Array
    (
    )

[region_id] => Array
    (
    )

[country_id] => Array
    (
    )

)