2017-04-05 14 views
-2

私は別のプログラマーが書いたウェブサイトに対処しようとしていました。ウェブサイトはyiiで構築されています。1.1.4yii1.1:umageをアップロードせずにレコードを更新できません

毎回新しい画像をアップロードせずに「店舗」レコードを更新できないようです。ここに画像をアップロードせずに更新しようとするとメッセージが表示されます: "次の入力エラーを修正してください:

画像は空白にできません。

ピクチャフィールド(別名「アイコン_ファイル名」)も必要ありません。 また、ほとんどのレコードにはまだ画像がアップロードされていません。

誰でも問題が分かりますか?

モデル::ここ

はコードである

public function rules() { 
    // NOTE: you should only define rules for those attributes that 
    // will receive user inputs. 
    return array(
     array('name, stream_id, full_address,about, country_id', 'required', 'on' => array('create')), 
     array('status, stream_id, lock_version', 'numerical', 'integerOnly' => true), 
     array('name, email', 'length', 'max' => 255), 
     array('about, full_address, website_url', 'length', 'max' => 500), 
     array('website_url, maps_service_url', 'url'), 
     array('phone, fax', 'length', 'max' => 30), 
     array('phone, fax', 'PcSimplePhoneValidator'), 
     array('country_id, region_id, assigned_user, created_by, last_updated_by_user_id', 'length', 'max' => 10), 
     array('assigned_user', 'validateAssignedUser', 'except' => 'search'), 
     array('city_id', 'length', 'max' => 6), 
     array('icon_filename', 'file', 
      'types' => "jpg,jpeg", 
      'wrongType' => Yii::t('StoresModule.forms', "Invalid file type. These are the supported file types: {extensions}"), 
      'maxSize' => 1048576, 
     ), 
     array('icon_filename', 'file', 'allowEmpty' =>true, 'on' => 'update'), 
     array('updated_on', 'safe'), 
     // The following rule is used by search(). 
     // Please remove those attributes that should not be searched. 
     array('id, name, email, stream_id, searchText, status, about, full_address, phone, fax, website_url, country_id, region_id, city_id, icon_filename, assigned_user', 'safe', 'on' => 'search'), 
    ); 
} 

コントローラ:

enter/** 
* Updates a particular model. 
* If update is successful, the browser will be redirected to the 'view' page. 
* 
* @param integer $id the ID of the model to be updated 
* @throws CHttpException 
*/ 
public function actionUpdate($id) { 
    /* @var Store $model */ 
    $model = $this->loadModel($id); 
    // set scenario to update to allow empty image - meaning no replacement of Store image 
    $model->scenario = 'update'; 

    if ($model === null) { 
     Yii::log("Store update requested with id $id but no such record found!", CLogger::LEVEL_INFO, __METHOD__); 
     throw new CHttpException(404, Yii::t("StoresModule.general", 'The requested page does not exist.')); 
    } 

    if (Yii::app()->user->checkAccess('edit Store')) { 
     // do nothing. edit is allowed. 
    } 
    else if (!is_null($model->assignedUser)) { 
     // some user is assigned to this Store 
     if (Yii::app()->user->checkAccess('edit assigned Store', array('assigned_user' => $model->assignedUser->id, 'user_id' => Yii::app()->user->id))) { 
      // do nothing. this user is the assigned user and therefore is allowed to edit. 
     } 
    } 
    else { 
     Yii::log("User (id=" . Yii::app()->user->id . ") tried to edit Store with id=$id but no such record. Giving him a **404** error", CLogger::LEVEL_WARNING, "SECURITY " . __METHOD__); 
     throw new CHttpException(404, Yii::t("StoresModule.general", 'The requested page does not exist.')); 
    } 

    if (isset($_POST['Store'])) { 
     $model->attributes = $_POST['Store']; 

     // use aux variable for manipulating the image file. 
     $image = CUploadedFile::getInstance($model, 'icon_filename'); 
     // check if a new image weas submitted or not: 
     if ($image) { 
      /* the only thing that might have changed in the update is the extension name of the image. therefore, 
           * if something was submitted, and since we already know the ID of the Store, we can determine the full 
           * updated icon_filename attribute of the model prior to its save() (unlike in create action - see there...). 
           */ 
      $model->icon_filename = $model->getImageFsFilename($image); 
     } 

     if ($model->save()) { 
      // save the updated image, if any 
      if ($image) { 
       $image->saveAs($model->getImageFsFilename($image)); 
       // create the thumbnail image file: 
       /* @var simple_image $thumbnail */ 
       $thumbnail = Yii::app()->imageResizer->load($model->icon_filename); 
       $thumbnail->resizeToWidth(Store::THUMBNAIL_WIDTH_LIMIT); 
       $thumbnail->save($model->getImageFsThumbFilename($image)); 
      } 
      $this->redirect(array('view', 'slug' => $model->generateUniqueSlug())); 
     } 
    } 

    $this->render('update', array(
     'model' => $model, 
    )); 
} 
+0

を保存します。私はコードに何が間違っているのか分かりません。ルールに従って写真は必要ない。 – codingnighter2000

答えて

0

あなたがDBでのgetInstanceや店舗に異なる属性を使用しなければならないことができますか?

E.G.コントローラ

$model->photo = CUploadedFile::getInstance($model, 'photo'); 

public $photo; 

    array('photo', 'file', 'maxSize' => 1048576, 'types' => 'jpg, png, gif, jpeg', 'allowEmpty' => true) 

その後、私はどのように知らない名前、パス、またはどのようなご希望

$model->pictureName = $model->photo->name; 
関連する問題