سلام
من می خوام تصاویر رو بصورت ارایه ای بفرستم ولی وقتی فرم سابمیت میشه فقط اخری ارسال میشه
کد هم بصورت زیر هست
echo CHtml::activeFileField($images,'['.$index.']path',array('class'=>'upload '));
مقادیر هم با $_FILES['ProductImages'] دریافت می کنم .
باید اسم عنصرتون بصورت آرایه باشه. مثلاً اینطوری:
echo CHtml::activeFileField($images, 'path[' . $index . ']', array('class' => 'upload'));
استاد این کار رو هم کردم ولی باز همون اخرین گزینه ارسال میشه
میتونید از fileField معمولی استفاده کنید و سمت سرور با CUploadedImage::getInstancesByName بخونید.
استاد
من کد رو این شکلی تغییر دادم
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
توی foreach باید هربار یه شئ جدید از کلاس ProductImages ایجاد کنید نه اینکه isNewRecord رو دستکاری کنید. شما با این کار دارین دوباره یه رکورد جدید با همون id قبلی درج میکنید (id مدل شما دیگه بعد از اولین Insert که انجام میشه، Null نیست).