Функция заполнения изображения SilverStripe вызывает ошибку сервера - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь на лету сделать обрезку внутри серебряной полосы.В прошлом мы использовали

$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

1 Ответ

0 голосов
/ 30 мая 2018

Самый простой способ - сделать следующее в вашем шаблоне.

$Article_Image.CroppedImage(390,235)

Вам не нужно иметь функцию ResizedImage в вашем контроллере.

Это ссылка на документы версии 3:

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

Метод Fit был введен в SS4.

...