【问题标题】:SilverStripe Image Fill Function is causing a server errorSilverStripe 图像填充功能导致服务器错误
【发布时间】:2018-05-30 11:01:16
【问题描述】:

我正在尝试在银色条纹内部进行动态裁剪。过去我们用过

$Article_Image->SetWidth(390)

成功了。它返回了正确宽度的图像。但是我现在想返回一个使用填充函数返回 390 x 235 图像的图像。到目前为止我得到的返回一个“服务器错误”,但它没有返回任何有用的错误。

在我的 newsArticle 类中,我有以下内容:

控制器 - 当前

class newsArticle extends Page {

    private static $has_one = array(
        'Article_Image' => 'Image'
    );
    public function ResizedImage() {
      return $this->Article_Image()->Fit(390,235);
    }
}

然后在我的页面模板中,我有以下内容:

模板 - 当前

<% if $Article_Image %>
    <div class="col-md-5 col-lg-4 nopadding">
        $ResizedImage()
    </div>
<% end_if %>

已经尝试过

我已经尝试在模板中只做 $Article_Image->Fit(390,235) 但它不起作用。我也尝试了以下代码,但它返回错误“无法在非成员对象上调用方法 Fit()”

控制器 - 已经尝试过

class newsArticle extends Page {

    private static $has_one = array(
        'Article_Image' => 'Image'
    );
    public function ResizedImage($Image) {
      return $Image->Fit(390,235);
    }
}

模板 - 已尝试

<% if $Article_Image %>
    <div class="col-md-5 col-lg-4 nopadding">
        $ResizedImage($Article_Image)
    </div>
<% end_if %>

如何让它返回适合特定尺寸的图像?我确信它可以完成,因为它在 Silverstripe 的文档中被提及: https://docs.silverstripe.org/en/4/developer_guides/files/images/

我使用的是 silverstripe 3.1.12

【问题讨论】:

    标签: php silverstripe


    【解决方案1】:

    最简单的方法是在您的模板中执行以下操作。

    $Article_Image.CroppedImage(390,235)
    

    您不需要在控制器中使用ResizedImage 函数。

    这是第 3 版文档的链接:

    https://docs.silverstripe.org/en/3.1/developer_guides/files/image/

    Fit 方法是在 SS4 中引入的。

    【讨论】:

    • 我猜这就是当您不断在 SS3 和 SS4 之间切换时会发生的情况。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多