2009-10-21 5 views
0

나는 Zend_Form에게젠드 양식 필드를 매핑 DB 열

$form = new My_Form(); 
$uploadedData = $form->getValues(); 
Zend_Debug::dump($uploadedData, $form->name,true) 

이 있고 난 형태의 값을 덤프 때 내가 문자열 배열을 얻을

array(11) { 
    ["event"] => string(2) "26" 
    ["firstname"] => string(3) "sdf" 
    ["surname"] => string(0) "" 
    ["gender"] => string(1) "M" 
    ["company"] => NULL 
    ["dateOfBirth"] => string(10) "11-11-1977" 
    ["address"] => string(6) "dfasdf" 
    ["address2"] => string(4) "adfs" 
    ["address3"] => string(4) "adfs" 
    ["email"] => string(7) "[email protected]" 
    ["mobile"] => string(0) "" 
} 

양식은 같은 수의 필드를 가지고 내 DB 테이블, DB 테이블 def는

DROP TABLE IF EXISTS `registration`; 
CREATE TABLE IF NOT EXISTS `registration` (
    `id` int(11) NOT NULL auto_increment, 
    `event` int(11) NOT NULL, 
    `firstname` varchar(50) NOT NULL, 
    `surname` varchar(50) NOT NULL, 
    `gender` varchar(5) NOT NULL, 
    `dateofbirth` date NOT NULL, 
    `address` varchar(50), 
    `address2` varchar(50), 
    `address3` varchar(50), 
    `email` varchar(50) NOT NULL, 
    `mobile` varchar(50), 
    `company` int(11), 
    `sector` int(11), 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

입니다. DB 이벤트 열은 현재 매핑 오류가 발생합니다. 'T는 문자열을, 그리고와 같은 '생년월일 (DateOfBirth) '열

if($form->isValid($formData)) 
{ 
    $logger->info("valid form"); 
    $table = new Model_DbTable_Registration(); 
    ... // apply some custom mapping?? 
    $table->insert($uploadedData); 
    ...  
} 

내가 원하지 않는 수동으로 새로운 배열을 생성해야하고, 이름으로 올바른 유형의 각 양식 필드를 매핑 - 그것은 고통처럼 보입니다. Zend에서 더 똑똑한 매핑을 할 수 있습니까?

+0

"이벤트"를 설정하기 위해 어떤 종류의 입력을 사용합니까? 데이터가 숫자 인 경우 배열을 추적 할 때 숫자이어야합니다. – typeoneerror

답변

1

새로운 ZF 버전에서 DataMapper Pattern을 이와 같이 사용하는 이유는 데이터를 설정, 저장 및 검색하는 방법을 완전히 추상화했기 때문입니다.

가장 좋은 방법은 새 클래스를 만든 다음 해당 클래스와 상호 작용하고 내부적으로 해당 클래스가 DbTable 클래스와 상호 작용하는 것입니다.

+0

예가 있습니까? 나는 그것을 발견 할 수 없다 :(. –