문제

zend_form이 있습니다

$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) "x@x.com"
  ["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 이벤트 열이 문자열을 취할 수없고 'dateofbirth'열과 동일하므로 현재 매핑 오류가 발생합니다.

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

새 배열을 수동으로 만들고 각 양식 필드를 이름으로 올바른 유형에 매핑하고 싶지 않습니다. 통증처럼 보입니다. Zend 에서이 매핑을하는 더 똑똑한 방법이 있습니까?

도움이 되었습니까?

해결책

그렇기 때문에 새 ZF 버전에서 데이터를 설정하고 저장 및 검색하는 방법을 완전히 추상화하는 데 데이터 메이퍼 패턴을 사용하는 이유입니다.

가장 좋은 방법은 새로운 수업을 만들고 해당 클래스와 상호 작용하고 내부적으로 클래스가 DBTable 클래스와 상호 작용하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top