رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ارسال تصاوبر به صورت ارایه
#1
سلام
من می خوام تصاویر رو بصورت ارایه ای بفرستم ولی وقتی فرم سابمیت میشه فقط اخری ارسال میشه
کد هم بصورت زیر هست
echo CHtml::activeFileField($images,'['.$index.']path',array('class'=>'upload '));

مقادیر هم با $_FILES['ProductImages'] دریافت می کنم .
پاسخ
تشکر شده توسط:
#2
باید اسم عنصرتون بصورت آرایه باشه. مثلاً اینطوری:
echo CHtml::activeFileField($images, 'path[' . $index . ']', array('class' => 'upload'));
پاسخ
تشکر شده توسط: googoli
#3
استاد این کار رو هم کردم ولی باز همون اخرین گزینه ارسال میشه
پاسخ
تشکر شده توسط:
#4
میتونید از fileField معمولی استفاده کنید و سمت سرور با CUploadedImage::getInstancesByName بخونید.
پاسخ
تشکر شده توسط:
#5
استاد
من کد رو این شکلی تغییر دادم
if(isset($_FILES['ProductImages']))
{
if(isset($_POST['ProductImages']))
$images->attributes = $_POST['ProductImages']; 
$photo = CUploadedFile::getInstancesByName('ProductImages[path]');
foreach ($photo as $key=>$value){
$arr = array(".jpg",".jpeg");
$filename = str_replace($arr,"",$value->name,$i);
Image::safeUpload($value->tempName, $filename,'product');
$images->isNewRecord = true ; 
$images->product_id = $model->id ; 
$images->path = '/images/product/'.$filename;

if($images->validate())
$images->save();
}
}
عکس رو ذخیره می کنه ولی هنگام ذخیره با این پیغام مواجه میشم
نقل قول:
CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '6' for key 'PRIMARY'. The SQL statement executed was: INSERT INTO `tbl_product_images` (`arrangement`, `product_id`, `path`, `id`) VALUES (:yp0, :yp1, :yp2, :yp3). Bound with :yp0=0, :yp1=1, :yp2='/images/product/images', :yp3=6
پاسخ
تشکر شده توسط:
#6
توی foreach باید هربار یه شئ جدید از کلاس ProductImages ایجاد کنید نه اینکه isNewRecord رو دستکاری کنید. شما با این کار دارین دوباره یه رکورد جدید با همون id قبلی درج میکنید (id مدل شما دیگه بعد از اولین Insert که انجام میشه، Null نیست).
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 3 مهمان