كيف يمكنني تمرير بيانات $_FILE و$_POST إلى نموذج؟

StackOverflow https://stackoverflow.com//questions/11690320

  •  12-12-2019
  •  | 
  •  

سؤال

حتى الآن هذا ما أعرفه هو الطريقة لتمرير البيانات من منشور إلى النموذج.

$form->setData( $this->getRequest()->getPost() );

اعتقدت أن هذا قد ينجح

$form
    ->setData( $this->getRequest()->getPost() )
    ->setData( $this->getRequest()->getFiles() );

وهو ما لا يحدث.من خلال النظر إلى مصدر إطار العمل، أكدت أنه لا ينبغي ذلك.لذلك كنت أفكر في دمج بيانات الملف في بيانات النشر.بالتأكيد لا يمكن أن يكون هذا هو الحل المطلوب؟ليس الأمر كما لو أن getPost() و getFiles() يُرجعان صفائف قابلة للدمج بسهولة، بل يُرجعان كائنات المعلمات.

يرجى ملاحظة أن هذا خاص بـ Zend Framework 2.

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

المحلول

هل جربت getFileInfo مع العلم الآن أو الانتباه إلى حقيقة أنك تستخدم Zend.عادة على أساس كل ملف $_FILE عبارة عن مصفوفة تعتمد على معلومات الملف الذي يتم تحميله.اسم الملف والامتداد وما إلى ذلك.زيندس getFileInfo إخراج تلك المعلومات بطريقة مماثلة.على الرغم من أنني لم ألعب بها منذ فترة، إلا أنها تستحق النظر فيها

مثال على المفهوم (أعرف المزيد عن عمليات تحميل الملفات المتعددة، ولكنه يعمل مع مفهوم واحد جيد يجب تركه سليمًا فقط في حالة رغبتك في إضافة ملف ثانٍ أو أكثر في المستقبل)

$uploads = new Zend_File_Transfer_Adapter_Http();
$files  = $uploads->getFileInfo();

foreach($files as $file => $fileInfo) {
    if ($uploads->isUploaded($file)) {
        if ($uploads->isValid($file)) {
            if ($uploads->receive($file)) {
                $info = $uploads->getFileInfo($file);
                $tmp  = $info[$file]['tmp_name'];
                $data = file_get_contents($tmp);
                // here $tmp is the location of the uploaded file on the server
                // var_dump($info); to see all the fields you can use
            }
         }
     }
}

نصائح أخرى

بعد محاولة استخدام محول نقل الملفات zend، ذهبت مع الحل البديل في وحدة التحكم.أعتقد أن SetData () في فئة النموذج يجب دمج العناصر في البيانات بدلا من استبدالها.(IMHO)

giveacodicetagpre.

أنا أستخدم array_merge :

giveacodicetagpre.

يمكنني استخدام متغيرات متغيرة مثل تشرح هذه المقالة إنشاء متغيرات ثم صدىهم كقيم لكل إدخال نموذج.

مثال:

giveacodicetagpre.

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