Como forçar a regeneração de modelos Twig?

8

Twig gera classes para seus modelos. Essas classes são efetivamente armazenadas em cache, sendo gravadas em disco.

De um modo geral, provavelmente não é necessário se preocupar com os detalhes de como os modelos de twig são manipulados, mas pode haver casos em que os modelos de twig devem ser gerados manualmente novamente. (Semelhante à necessidade do módulo de reconstrução do Registro em D7)

Se for relevante, estou perguntando porque estou com um erro parecido com este:

Erro fatal: Classe '__TwigTemplate_ddad913164239ac659c2bca09b3a49a5' não encontrada no core / lib / Drupal / Core / Template / TwigEnvironment.php na linha 107

Letharion
fonte

Respostas:

6

Não sei por que você recebeu esse erro específico, mas veja drupal_flush_all_caches (), que faz

PhpStorageFactory::get('twig')->deleteAll();

Dito isto, não tenho certeza se isso resolverá o seu problema, pois nunca vi esse erro, não sei como isso pode acabar esperando uma classe que não existe.

Berdir
fonte
Interessante que você diz que nunca viu, como já vi antes. Então eu apenas reinstalei, e funcionou. Agora nem isso ajuda.
Letharion
2
Neste caso, este acabou por ser ruim a propriedade do arquivo de configurações ... Obrigado pela mensagem de erro útil Drupal;)
Letharion
11
No meu caso, foram as permissões da pasta de arquivos públicos que não foram definidas corretamente. Instalei o site usando drush, que em meu ambiente local é um usuário diferente do servidor da web. A solução foi ajustar as permissões da pasta.
batigolix
11
Por drush:drush ev '\Drupal\Core\PhpStorage\PhpStorageFactory::get("twig")->deleteAll();'
Tim
1

Eu estava vendo esse erro do Twig no meu log de erros ao tentar acessar um site do Drupal 8.x depois de ter sido instalado com drush drush si --db-url=mysql://root:root@localhost/mysite -y. Portanto, para corrigir o problema, novamente com drush, basta limpar o cache:

drush cr all 

Além disso, depois disso, se o seu novo site Drupal 8.x não parecer ter nenhum estilo CSS, é provável que o usuário apache / httpd não tenha permissões de gravação nos sites / padrão / arquivos.

alexkb
fonte