سؤال

ولدي 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 هو

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);
    ...    
}

وأنا لا أريد أن يكون لإنشاء يدويا مجموعة جديدة، وتعيين كل حقل نموذج لنوع الصحيح بالاسم - هو يبدو وكأنه ألم. هل هناك طريقة أكثر ذكاء للقيام بذلك التعيين في زند؟

هل كانت مفيدة؟

المحلول

وهذا هو السبب في النسخة ZF الجديد باستخدام نمط DataMapper لمثل هذه الامور، وكنت مجردة تماما كيفية إعداد وحفظ واسترجاع البيانات.

وأفضل رهان هو خلق طبقة جديدة ومن ثم التفاعل مع تلك الفئة، وداخليا تلك الفئة تتفاعل مع الطبقة DbTable الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top