2017-05-14 14 views
-1

データベースに保存されているイメージの元のパスを取得する関数を作成しました。配列からビュー上のファイル名を変更する関数

public function getImageWork($suffix) 
{ 
    $basePath = 'uploads/works/'; 
    $fullname = pathinfo($this->images, PATHINFO_FILENAME); 
    $imageWork = $basePath . $fullname . $suffix; 

    if (file_exists($imageWork)) { 
     return URL('/') . '/' . $imageWork; 
    } else { 
     return $imageWork = URL('/') . '/img/no-avatar.jpg'; 
    } 
} 

は、私には、例えば、_coverまたは_thumb、この機能のおかげで、それが私の見解で私を可能にする、私は同じ名前の同じフォルダではなく、私は追加最後に保存し、いくつかの異なる画像サイズを作成しますmake $ image->getImageStudents('_ thumb.jpg')

私は別のケースの前にいるので、動作させることはできません。 私は画像ギャラリーを持っており、私のDBには、画像が配列の下に格納されています。

["uploads/img1.jpg","uploads/img2.jpg","uploads/img3.jpg"…] 

私のforeach内で機能するように変更するにはどうしたらいいですか?

私はpathinfo($this-> images)をやっていますが、それを行うことで、私はアレイ全体を回復してしまい、動作しないようです。

はあなたに私は1つの機能ではなく thisに頼るのイメージ変数に取る2つの関数にアップコードを分割します

答えて

0

非常に感謝します。このような

何か:

public function getImageWork($suffix) 
{ 
    if (!is_array($this->images)) { 
     return $this->getSingleImageWork($this->images, $suffix); 
    } 

    $output = []; 
    foreach ($this->images as $image) { 
     $output[] = $this->getSingleImageWork($images, $suffix); 
    } 
    return $output; 
} 

public function getSingleImageWork($image, $suffix) { 
    $basePath = 'uploads/works/'; 

    $fullname = pathinfo($image, PATHINFO_FILENAME); 
    $imageWork = $basePath . $fullname . $suffix; 

    if (file_exists($imageWork)) { 
     return URL('/') . '/' . $imageWork; 
    } 

    return $imageWork = URL('/') . '/img/no-avatar.jpg'; 
} 

注:私は変数であるかどうかはわかりませんが、私は$this->imagesはいくつかの種類の変数、または値の配列のいずれかであることを、ここで想定しています。

1

getImageWork方法で画像の両方に単一の値配列に対応するために、あなたは以下の方法でそれをリファクタリングする必要があり、出力として

public function getImageWork($suffix = ""){ 
    $basePath = 'uploads/works/'; 
    $imagePathArr = array(); 
    $images = is_array($this->images) ? $this->images : array($this->images); 
    foreach($images as $image){ 
     $fullname = pathinfo($image, PATHINFO_FILENAME); 
     $imageWork = $basePath . $fullname . $suffix; 

     if (file_exists($imageWork)) { 
      $imagePathArr[] = URL('/') . '/' . $imageWork; 
     } else { 
      $imagePathArr[] = URL('/') . '/img/no-avatar.jpg'; 
     } 
    } 
    return $imagePathArr; 
} 

、上記の方法は、以下の配列を返しますコードパスの後半で使用できるイメージパス。

関連する問題