2014-04-23 1 views
1

Zend 1을 사용하는 사이트에 대한 코드를 작성합니다. zend에서 이전 관리 인터페이스를 다시 작성하려고하지만 양식의 유효성을 검사하지 못합니다.zend_form isValid always false

양식, 유효성 검사 코드 및 디버그 출력을 여기에 게시합니다.

형태 :

class Form_Admin_Address_Neu extends Zend_Form { 

public function init() { 
$this->setMethod('post'); 

$this->addElement('text', '_street', array(
    'label' => 'Strasse:', 
    'size' => 60, 
    'required' => true, 
    'filters' => array('StringTrim'), 
)); 

$this->addElement('text', '_zip', array(
    'label' => 'PLZ:', 
    'size' => 6, 
    'required' => true, 
    'filters' => array('StringTrim'), 
)); 

$this->addElement('text', '_city', array(
    'label' => 'Stadt:', 
    'required' => true, 
    'size' => 30, 
    'filters' => array('StringTrim'), 
)); 

$this->addElement('text', '_lat', array(
    'label' => 'Latitude:', 
    'required' => true, 
    'size' => 30, 
    'validators' => array('Float'), 
    'filters' => array('Stringtrim'), 
)); 

$this->addElement('text', '_lng', array(
    'label' => 'Longitude:', 
    'required' => true, 
    'size' => 30, 
    'validators' => array('Float'), 
    'filters' => array('Stringtrim'), 
)); 

$this->addElement('checkbox', '_hidden', array(
    'label' => 'Hidden:', 
    'size' => 1, 
    'filters' => array('Int', 'Null'), 
)); 

$this->addElement('submit', 'submit', array(
    'ignore' => true, 
    'label' => 'Senden', 
)); 

$this->addElement('hash', 'csrf', array(
    'ignore' => true, 
)); 

$this->setAction('/admin/address/list'); 
} 

} 

추가 필드가 (난 그냥 여기에 하나를 게시, 2는 같다) :

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 
    (
    ) 

) 

내가 본 것처럼 유효성 검사가 실패하지만 그 이유는 모르겠습니다. 값은 $ _POST에 있지만 양식에서 유효성을 검사하지 않습니다. 나는 심지어 isValidPartial()과 같은 결과를 시도했다. 나는 근본적으로 잘못된 것을하고 있다고 생각합니다. 힌트가 좋을 것입니다.

+0

솔루션 생각 : 내 양식에 -Filters 등 "LocalizedToNormalized"없이 일 때문에 내가 내 부트 스트랩이를 넣어 : '$ locale = new Zend_Locale(); $ locale-> setLocale ('en_US'); – cari

답변

0

시도 사전에

타이는 LatitudeLongitudecomma 대신 point의를 입력합니다.
1,0 대신 1.02,12.1

나는 그것이 문제에 대한 Locale 귀하의 유효성 검사기의를

+0

맞아요, 문제는 데이터베이스가 필드 유형으로 떠돌 았기 때문에 내용이 저장되지 않았기 때문입니다. – cari

관련 문제