Путь в пространстве имен Twig без слеша работает на локальной машине (Mac), но не на сервере - PullRequest
0 голосов
/ 03 января 2019

Я работаю над устаревшим проектом с 2013 года (когда-то Symfony 2, но теперь Symfony 3.4), и когда я пытаюсь получить файл Twig (который находится в нескольких каталогах) по этому пути:

'MyBundle:Default:_partials:internalSubStatus.html.twig'

Это прекрасно работает на моем локальном компьютере (Mac), но выдает ошибку на сервере

"Невозможно найти шаблон" MyBundle: По умолчанию: _partials: internalSubStatus.html.twig "(заглянул в: / var/ www / mylocalpathhere / htdocs / app / Resources / views, /var/www/mylocalpathhere/htdocs/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form)."

Это происходит только при наличии нескольких папок.Таким образом, он работает без косой черты, когда он имеет только одну глубокую папку, как эта

'MyBundle:_partials:internalSubStatus.html.twig'

В нескольких папках глубоко нам всегда нужен один слэш.Так что работает в следующих случаях , заменяя 1 двоеточие косой чертой .Почему это?И какой путь идти?

MyBundle:Default:_partials/internalSubStatus.html.twig

MyBundle:Default/_partials:internalSubStatus.html.twig

1 Ответ

0 голосов
/ 30 июня 2019

Использование MyBundle:Default:_partials:internalSubStatus.html.twig - это старый синтаксис, который больше не рекомендуется./ работает, потому что распознаватель теперь будет искать подкаталог.Это сбивает с толку, и проблема была создана в 2014 году по самому вашему вопросу.

Для этого нужно использовать новый синтаксис, который вы также можете найти в документальном фильме для symfony 3.4 , и я цитирую:

Если вам нужнодля ссылки на шаблон, который находится в пакете, Symfony использует синтаксис пространства имен Twig (@ BundleName / directory / filename.html.twig).Это позволяет использовать несколько типов шаблонов, каждый из которых находится в определенном месте

В вашем случае я представляю, что это будет @MyBundle/Default/_partials/internalSubStatus.html.twig

...