Обработка изображения, Twig расширение ч1

Фильтр буду создавать в свое бандле


namespace Uv\File\Twig;

use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Uv\File\Components\Image\ImageStyle;
use Uv\File\Entity\File;

class ImageStyleExtension extends AbstractExtension
{

  private $imageStyle;

  public function __construct(ImageStyle $image_style)
  {
    $this->imageStyle = $image_style;
  }

  public function getFilters()
  {
    return [
      new TwigFilter('image_style', [$this, 'formatImageStyle'], [
        'is_safe' => ['html']
      ]),
    ];
  }

  public function formatImageStyle(File $file, $image_style)
  {

    return "<img>".$image_style."</img>";
  }
}

templates/Page/view.html.twig - Добавляем код в twig

<div class="field field-image">{{ page_data.image|image_style('480x480-crop') }}</div>
<div class="field field-body">{{ page_data.fieldBody.body }}</div>

Класс который будет обрабатывать изображения.

/**
 * Created by PhpStorm.
 * User: PC
 * Date: 3/27/2019
 * Time: 8:05 AM
 */

namespace Uv\File\Components\Image;


class ImageStyle
{

}

И добавляем сервис в наш бандл, у меня в банлде autowire отключён (Uv/File/src/Resources/config/services.yaml)

  Uv\File\Components\Image\ImageStyle:
    autowire: true

  Uv\File\Twig\ImageStyleExtension:
    autowire: true

 

Фильтрация статей категорий по языку.
Обработка изображения, класс ImageStyle Ч2
Советую почитать