رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
درست کار نکردن ویجت FileInput (حل شد)
#1
Sad 
سلام
داشتم توی Yii از ویجت kartik از fileinputش استفاده می کردم. اولش خوب کار می کرد ولی وسط کار, از کار افتاد. از  متغیر پست شده اون var_dump گرفتم مقدار ارسال شده رو از نوع string و خالی نشون میده. وقتی از UploadedFile::getInstance هم استفاده می کنم, توی خروجیش مشخصات فایل آپلود شده رو می ده ولی فاقد فایله و توی جابجایی فایل خطا می گیره.
لطفا دوستان راهنمایی کنن.
اینم کدهایی که استفاده کردم:
<?=
    $form->field($model, 'imageLogo')->widget(FileInput::classname(), [
       'options' => ['accept' => 'image/*',],
       'language' => 'fa',
       'pluginOptions' => [
           'showUpload' => FALSE,
           'allowedFileExtensions' => ['jpeg', 'jpg', 'gif', 'png'],
           'initialPreview' => [
               (is_null($model->logo) ? NULL :
                       Html::img(Yii::getAlias('@brand') . DIRECTORY_SEPARATOR . $model->logo, [
                            'class' => 'file-preview-image',
                            'alt' => $model->title_en,
                            'title' => $model->title_fa
                        ])),
           ],
       ],
   ]);
   ?>

اینم توی کنترولر:
public function actionUpdate($id) {
        $model = $this->findModel($id);
       //For delete old logo image and create new image for update
       $oldlogo = (is_null($model->logo) ?
                       NULL : Yii::getAlias('@brand') . DIRECTORY_SEPARATOR . $model->logo);

       if ($model->load(Yii::$app->request->post())) {
           if (!empty($model->imageLogo)) {
               $image = UploadedFile::getInstance($model, 'imageLogo');
               
               $ext = end((explode(".", $image->name)));
               $model->logo = $model->id . '_' . $model->title_en . ".{$ext}";
               //create path for save new image
               $path = Yii::getAlias('@brand') . DIRECTORY_SEPARATOR . $model->logo;
           }
           if ($model->save()) {
               if (!empty($model->imageLogo)) {
                   //delete old logo and save new logo
                   if (file_exists($oldlogo)) {
                       unlink($oldlogo);
                   }
                   $image->saveAs($path);
                   CommonFunctions::resize($path, 200, 200, $path);
               }
               return $this->redirect(['view', 'id' => $model->id]);
           }
       } else {
           return $this->render('update', [
                        'model' => $model,
            ]);
       }
   }
پاسخ
تشکر شده توسط:
#2
دوباره سلام
از اینکه انقدر لطف داشتین و به مشکلات کاربران رسیدگی می کنین ممنونم.
مشکل بنده که حل شد. گفتم حداقل راه حلش رو اینجا بزارم تا یکی مثل من به این مشکل برخورد, مشکلش حل بشه.
توی کنترولر 2 خط از کد رو جابجا کردم و مشکل حل شد:
$image = UploadedFile::getInstance($model, 'imageLogo');
if (!empty($image)) {
...
پاسخ
تشکر شده توسط:
#3
ممنون از اینکه راه حل رو به اشتراک گذاشتین. قرار نیست پاسخ همه مشکلات پیش ما باشه.
پاسخ
تشکر شده توسط:




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