Ответ
Я работал с интеграцией Smarty в Symfony при поддержке legacy-проекта, который изначально был написан на чистом PHP со Smarty и постепенно мигрировал на Symfony.
Основные шаги по интеграции:
1. Установка бандла `smarty/smarty-bundle` через Composer.
2. Настройка в `config/packages/smarty.yaml`:
```yaml
smarty:
options:
template_dir: '%kernel.project_dir%/templates/'
compile_dir: '%kernel.project_dir%/var/cache/smarty/compile/'
cache_dir: '%kernel.project_dir%/var/cache/smarty/cache/'
```
3. Использование в контроллере аналогично Twig:
```php
// src/Controller/ProductController.php
class ProductController extends AbstractController
{
public function show(int $id): Response
{
$product = $this->getDoctrine()->getRepository(Product::class)->find($id);
return $this->render('product/show.tpl', [
'product' => $product,
'features' => $product->getFeaturesAsArray()
]);
}
}
```
**Пример шаблона `templates/product/show.tpl`:**
```smarty
{extends file='layout/base.tpl'}
{block name='title'}Детали товара: {$product.name}{/block}
{block name='content'}
{$product.name|escape}
Цена: {$product.price|number_format:2} руб.
{if !empty($features)}Характеристики:
-
{foreach $features as $key => $value}
- {$key|capitalize}: {$value} {/foreach}