سلام.
میخوام توی فرم وقتی عکس رو انتخاب نمیکنم پیام بده
عکس نمیتواند خالی باشد.
توی مدل اومدم یه attributeLabels واسه این کار اضافه کردم تا پیام بده.حالا عکس نباشه پیام میده و مشکلی ندارم ولی موقعی که عکس هست و فرم Submit میشه بازم میگه "عکس نمیتواند خالی باشد."
یه rule هم اضافه کردم .
array('photo,', 'required'),
چون عکس با POST ارسال نمیشه و با FILES فرستاده میشه. از CFileValidator استفاده کنید:
array('photo', 'file', 'maxSize' => 1048576, 'tooLarge' => 'Only up to 1MB allowed.', 'mimeTypes' => 'image/jpeg, image/png', 'wrongMimeType' => 'Only JPEG/PNG Allowed', 'types' => 'jpg, png', 'wrongType' => 'Only .jgp/.png Allowed.'),
این ارور رو داد
In order to use MIME-type validation provided by CFileValidator fileinfo PECL extension should be installed.
اینو فعال کردم درست شد.
extension=php_fileinfo.dll
وقتی فرم رو خالی ارسال میکنم بجای اروری که نوشتم باید بده خطای 500 میده.
Error 500
Trying to get property of non-object
این خطا مال ولیدیتور نیست. مال وقتی هست که میخواین از عکس استفاده کنید. باید اینطوری کار کنید:
if($photo = CUploadedFile::getInstance($model, 'photo')) {
// process file here
}
ممنون ارور رفع شد.اما خطای اینکه عکس خالیه رو نمیده همون کد آقای شهرکی رو گذاشتم.
من تست کردم خطا داد وقتی عکس رو انتخاب نکردم. کد کاملتون رو بگذارین.
دو تا Validator رو بگذارین. هم file و هم required (توی دوتا رول جداگانه).
وقتی میخوام فایل انتخاب کنم و کنسل میکنم ارور رو نشون میده اما وقتی فرم رو خالی ارسال میکنم ارور نمیده.زمانی هم که validator ها فعال هستن و فرم رو سابمیت میکنم ارور میده که عکس انتخاب نشده.یعنی برعکس عمل میکنه وقتی پره ارور خالی بودن میده.
array('slide', 'required', 'message'=>'عکس نمی تواند خالی باشد.'),
array(
'slide', 'file',
'maxSize' => 5242880,
'on'=>'insert',
'tooLarge' => 'حجم فایل از 5 مگابایت بیشتر است.',
'mimeTypes' => 'image/jpeg',
'wrongMimeType' => 'فقط فایل های jpg و jpeg مجاز هستند.',
'types' => 'jpg, jpeg',
'wrongType' => 'فقط فایل های jpg و jpeg مجاز هستند.',
),
array(
'slide', 'file',
'maxSize' => 5242880,
'on'=>'update', 'allowEmpty'=>true,
'tooLarge' => 'حجم فایل از 5 مگابایت بیشتر است.',
'mimeTypes' => 'image/jpeg',
'wrongMimeType' => 'فقط فایل های jpg و jpeg مجاز هستند.',
'types' => 'jpg, jpeg',
'wrongType' => 'فقط فایل های jpg و jpeg مجاز هستند.',
),
public function actionCreate() {
$model = new Indextopslider;
if($model->slide = CUploadedFile::getInstance($model, 'slide')){
if ((isset($_POST['Indextopslider'])) && ($model->slide->error == 0) && ($model->slide->size <= 5242880) && ($model->slide->type == 'image/jpeg')) {
$model->attributes = $_POST['Indextopslider'];
$model->year= date('Y');
$model->confirmed = 1;
if ($model->save()) {
Image::uploadSaver($model->slide->tempName, 'slider\'.date('Y').'\', $model->id);
$this->redirect(array('index'));
}
}
}
$this->render('create', compact('model'));
}
با clientValidation مشکل پیش میاد یا ajaxValidation یا کلاً سمت سرور مشکل دارین؟