كيف يمكنني تمرير بيانات $_FILE و$_POST إلى نموذج؟
-
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.