Спасибо всем, кто ответил, и за идею с Kernel. В очередной раз "полез" в доки, и нашел ещё вариант решения.
Получается, Symfony4 компилирует конфигурацию, контроллеры, расширения, шаблоны и т.д., и складывает это всё в папку /var/cache, где уже путь к шаблонам жестко прописан. И поменять его после этого в приложении скорее всего не получится.
Значит нам изначально надо создать 2 конфигурации, и в нашем случае в зависимости от $_SERVER['SERVER_NAME'] выбирать одну из них.
Для этого вносим правки в сonfig/packages/twig.php
<?php
if (isset($_SERVER['SERVER_NAME']) && preg_match("/m.example.com/i", $_SERVER['SERVER_NAME'])) {
$container->loadFromExtension('twig', [
'paths' => [
'%kernel.project_dir%/templates_mobile' => null
],
// ... другие опции конфига
]);
} else {
$container->loadFromExtension('twig', [
'paths' => [
'%kernel.project_dir%/templates' => null
],
// ... другие опции конфига
]);
}
Если у вас конфигурация в файле twig.yaml, перепишите её в формате twig.php, и после этого файл twig.yaml удалите.
И вносим правки в src/Kernel.php
<?php
// ...
public function getCacheDir(): string
{
if (isset($_SERVER['SERVER_NAME']) && preg_match("/m.example.com/i", $_SERVER['SERVER_NAME'])) {
return $this->getProjectDir()."/var/cache_mobile/".$this->environment;
} else {
return $this->getProjectDir()."/var/cache/".$this->environment;
}
}
// ...