0

我正在尝试编写一个函数来显示来自 Holder Page 上子页面的图像。

因为 SilverStripe 在模板上缺少一些功能,所以我认为最好在控制器中处理它们。

我需要一些条件语句,它们只能在 php.ini 中完成。

控制器.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 和 span 存在,但图像不存在。代码中有更多条件,但这只是基本版本。它改为显示“Image_Cached”。

我怎样才能让它显示图像?

4

1 回答 1

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 的方式,这样你的显示逻辑就不会弄乱你的控制器

于 2013-02-27T03:59:23.353 回答