2013-02-27 32 views
0

我正試圖編寫一個功能,顯示持有人頁面上的子頁面的圖像。SilverStripe 3:控制器功能中的圖像對象

由於SilverStripe在模板上缺少一些功能,我認爲最好在控制器中處理它。

我需要一些條件語句,只能在php中完成。

Controller.php這樣

public function LatestWork() { 

$works = WorkPage::get(); 

$i = 1; 
$html = ""; 
foreach ($works as $work) { 

    //Build the IMage Object so we can add it to the Work Object 
    $ImageObj = File::get()->byID($work->FeaturedImageID); 

    if ($this->is_odd($i)) { 
    $html .= "<div class='row'>"; 
    $span = "span8"; 
    } else { 
    $span = "span4"; 
    } 
    $html .= "<div class = '$span'>" . $ImageObj->croppedImage(200,100) . "</div>"; 
    if ($this->is_even($i) || $i == $works->Count()) { 
    $html .= "</div>"; 
    } 
    $i++; 
} 

return $html; 
} 

當其在視圖中的div和跨度那裏處理,但該圖像不是。代碼中有更多的條件,但這只是基本版本。 它改爲顯示「Image_Cached」。

如何讓它顯示圖像?

+0

- >裁剪圖像(200,100)沒有HTML或其他任何其他例如:返回$ ImageObj->裁剪圖像(200,100)。 「」它顯示的圖像,但只要你添加任何它顯示Image_cache – user742736 2013-02-27 03:48:28

回答

1

控制器:

public function LatestWork() { 
    $rows=new ArrayList(); 
    foreach(WorkPage::get() as $workPage){ 
     if (!isset($bucket)){ 
       $bucket = new ArrayList(); 
       $bucket->push($workPage); 
       $rows->push($bucket); 
     } else { 
       $bucket->push($workPage); 
       unset($bucket); 
     } 
    } 
    return $rows; 
} 

模板:

<% loop LatestWork %> 
    <div class="row"> 
    <% if Odd %> 
     <div class="span-8"> 
      <% with $Me.First %>$FeaturedImage.CroppedImage(200,100)<% end_with %> 
     </div> 
     <div class="span-4"> 
      <% with $Me.Last %>$FeaturedImage.CroppedImage(100,50)<% end_with %> 
     </div> 
    <% else %> 
     <div class="span-4"> 
      <% with $Me.First %>$FeaturedImage.CroppedImage(100,50)<% end_with %> 
     </div> 
     <div class="span-8"> 
      <% with $Me.Last %>$FeaturedImage.CroppedImage(200,100)<% end_with %> 
     </div> 
    <% end_if %> 
    </div> 
<% end_loop %> 

將是SS方式做到這一點,這樣當您返回$ ImageObj您的顯示邏輯不弄亂你的控制器

+0

嗨JF, 再次感謝,因爲我說在那裏有一個更多的條件邏輯,SS方式將無法這樣做,這就是爲什麼我試圖用PHP來做到這一點。 如果有一個SS方法來替換示例中的每一行,我在這裏http://stackoverflow.com/questions/15098248/silverstripe-3-alternate-value-in-template-within-a-loop?rq = 1那麼這將是太棒了。 – user742736 2013-02-27 04:11:02

+0

Span8將有一個更大的圖像(裁剪)和Span4將有一個較小的圖像(裁剪)。每第二排,它將切換到Span4開始,然後Span8開始第二個 – user742736 2013-02-27 04:12:58

+0

我已經更新了我的迴應,以什麼可能是您的問題的一種方法 – jfbarrois 2013-02-27 04:32:47