За последние 24 часа нас посетили 22890 программистов и 1237 роботов. Сейчас ищут 725 программистов ...

Функция вставки картинок +Yii2

Тема в разделе "Yii", создана пользователем roswww, 20 дек 2018.

  1. roswww

    roswww Активный пользователь

    С нами с:
    15 окт 2016
    Сообщения:
    154
    Симпатии:
    4
    Адрес:
    Cтаврополь
    Доброго времени суток,..
    У меня есть сайт решил добавить туда блог .- сейчас нужно реализовать функционал загрузки картинок и отображения их в статьи ,но у меня уже существует такая функция но ,- для заполнения профиля . И эту функцию можно использовать не только для блога но и в любом месте скрипта .
    Как сделать пере направление ,-чтоб всё работало.
    вот модель и контроллер
    /
    Код (Text):
    1.   public function uploadAvatar($filePath)
    2.     {
    3.         $file = UploadedFile::getInstance($this, 'avatar');
    4.  
    5.         // if no file was uploaded abort the upload
    6.         if ( null === $file ) {
    7.             return false;
    8.         }
    9.  
    10.         // file extension
    11.         $fileExt = $file->extension;
    12.         // purge filename
    13.         $fileName = \Yii::$app->security->generateRandomString();
    14.         // update file->name
    15.         $file->name = $fileName.".{$fileExt}";
    16.         // update avatar field
    17.         $this->avatar = $fileName.".{$fileExt}";
    18.         // save images to imagePath
    19.         $file->saveAs($filePath.$fileName.".{$fileExt}");
    20.  
    21.         return $file;
    22.     }
    23.  
    24.     /**
    25.      * fetch stored image file name with complete path
    26.      *
    27.      * @return string
    28.      * @throws InvalidParamException
    29.      */
    30.     public function getImagePath()
    31.     {
    32.         return $this->avatar ? \Yii::getAlias(\Yii::$app->getModule('userextended')->avatarPath).$this->avatar : null;
    33.     }
    34.  
    35.     /**
    36.      * fetch stored image url
    37.      *
    38.      * @return string
    39.      * @throws InvalidParamException
    40.      */
    41.     public function getImageUrl()
    42.     {
    43.         if ( !$this->avatar && $this->getAccountAttributes() !== null )
    44.         {
    45.             $imageURL = $this->getSocialImage();
    46.  
    47.         } else {
    48.  
    49.             $avatar   = $this->avatar ?: 'default.png';
    50.             $imageURL = \Yii::getAlias(\Yii::$app->getModule('userextended')->avatarURL).$avatar;
    51.         }
    52.  
    53.         return $imageURL;
    54.     }
    55.  
    56.     /**
    57.      * Process deletion of image
    58.      *
    59.      * @param string $avatarOld
    60.      *
    61.      * @return bool
    62.      * @throws InvalidParamException
    63.      */
    64.     public function deleteImage($avatarOld)
    65.     {
    66.         $avatarURL = \Yii::getAlias(\Yii::$app->getModule('userextended')->avatarPath).$avatarOld;
    67.  
    68.         // check if file exists on server
    69.         if (empty($avatarURL) || !file_exists($avatarURL)) {
    70.             return false;
    71.         }
    72.  
    73.         // check if uploaded file can be deleted on server
    74.         if (!unlink($avatarURL)) {
    75.             return false;
    76.         }
    77.  
    78.         // if deletion successful, reset your file attributes
    79.         $this->avatar = null;
    80.  
    81.         return true;
    82.     }
    83.  
    84.     /**
    85.      * Get image form Social
    86.      *
    87.      * @return string
    88.      */
    89.     public function getSocialImage()
    90.     {
    91.         $account  = $this->getAccountAttributes();
    92.  
    93.         switch($account['provider'])
    94.         {
    95.             case 'facebook':
    96.                 /** @var Account $account */
    97.                 $imageURL = 'https://graph.facebook.com/' . $account['client_id'] . '/picture?type=large';
    98.                 break;
    99.             case 'twitter':
    100.                 /** @var Account $account */
    101.                 $imageURL = '';
    102.                 break;
    103.             default:
    104.                 $imageURL = null;
    105.         }
    106.  
    107.         return $imageURL;
    108.     }
    Код (Text):
    1. public function actionProfile()
    2.     {
    3.         // Load Model
    4.         $model = $this->finder->findProfileById( Yii::$app->user->identity->getId() );
    5.  
    6.         // If Profile not exist create it
    7.         if ($model === null) {
    8.             $model = Yii::createObject(Profile::class);
    9.             $model->link('user', Yii::$app->user->identity);
    10.         }
    11.  
    12.         // Load Old Image
    13.         $oldImage = $model->avatar;
    14.  
    15.         // Load avatarPath from Module Params
    16.         $avatarPath = Yii::getAlias( Yii::$app->getModule('userextended')->avatarPath);
    17.  
    18.         // Create uploadAvatar Instance
    19.         $image = $model->uploadAvatar($avatarPath);
    20.  
    21.         // Profile Event
    22.         $event = $this->getProfileEvent($model);
    23.  
    24.         // Ajax Validation
    25.         $this->performAjaxValidation($model);
    26.  
    27.         $this->trigger(self::EVENT_BEFORE_PROFILE_UPDATE, $event);
    28.  
    29.         if ( $model->load( Yii::$app->request->post()) && $model->save())
    30.         {
    31.             // revert back if no valid file instance uploaded
    32.             if ($image === false) {
    33.  
    34.                 $model->avatar = $oldImage;
    35.  
    36.             } else {
    37.              
    38.                 // if is there an old image, delete it
    39.                 if($oldImage) {
    40.                     $model->deleteImage($oldImage);
    41.                 }
    42.  
    43.                 // upload new avatar
    44.                 $model->avatar = $image->name;
    45.             }
    46.  
    47.             Yii::$app->getSession()->setFlash('success', Yii::t('user', 'Your profile has been updated'));
    48.  
    49.             $this->trigger(self::EVENT_AFTER_PROFILE_UPDATE, $event);
    50.  
    51.             return $this->refresh();
    52.         }
    53.  
    54.         return $this->render('profile', [
    55.             'model' => $model
    56.         ]);
    57.     }
    ]