Twig Extends, carregando laytou que está em outro diretório.

174 views
Skip to first unread message

Lukas Wilkeer

unread,
Sep 14, 2013, 6:35:56 PM9/14/13
to symfo...@googlegroups.com
Boa Noite pessoal.

Estou tento um problema com o twig, já tentei de vários modos, procurei na documentação e em vários outros locais mas não consegui resolver meu problema.


Eu tenho o seguinte estrutura:

Site
-- web
-- web/principal
-- templates

Tenho um arquivo chamado index no web/principal, o meu layout está na templates/layout, gostaria de carregar o template lauout, mas de um arquivo na pasta web/principal.

Já tentei usar o twig.path colocando os dois diretórios e depois colocando o endereço completo extends mas não deu certo.

Alguem sabe o que posso fazer?

Obs: Estou usando o Silex, micro-framework baseado no Symfony.

Marcelo Rodrigues

unread,
Sep 15, 2013, 9:06:23 AM9/15/13
to symfo...@googlegroups.com
O twig não suporta include/extends a partir de caminhos relativos. Nesse caso, você dois caminhos base para os templates, então você pode configurar a instância do "loader" usando multiplos caminhos base, ou adicionar outro, se for o caso. 

$loader = new Twig_Loader_Filesystem('/web/principal', '/web/layout');
// ou
$loader = new Twig_Loader_Filesystem('/web/principal');
$loader->addPath('/web/layout');


Mas eu sugiro que você organize todos os templates em apenas um diretório, fora do diretório publico (web) e lá insira os templates comums e de layout. Ex:

/web
/templates (ou views, como queira) --> esse aqui é a raíz para o Twig. 
   layout.html.twig
   default.html.twig
   users.html.twig
   posts.html.twig
   ....
   

Marcelo



2013/9/14 Lukas Wilkeer <luka...@gmail.com>

--
You received this message because you are subscribed to the Google Groups "Symfony Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to symfony-pt+...@googlegroups.com.
To post to this group, send email to symfo...@googlegroups.com.
Visit this group at http://groups.google.com/group/symfony-pt.
For more options, visit https://groups.google.com/groups/opt_out.



--
Marcelo Rodrigues

Analista Desenvolvedor Web
Zend Certified Engineer ZEND018059

+55 (61) 9273 2058

Lukas Wilkeer

unread,
Sep 16, 2013, 1:08:57 PM9/16/13
to symfo...@googlegroups.com
Boa Tarde Marcelo.

Primeiramente obrigado pela ajuda.
Agora, me apareceu outro erro, mas desta vez foi com o extends. Eu tenho dois arquivos na pasta web, tentei colocar tudo num local só.
web/layout.html web/index.php

no index, eu tenho o seguinte código.
{% extends "layout.php" %}
{% block content %}
<h1>Welcome to Silex!<h1>
{% endblock %}

Já no layout tenho o código padrão que vem no Twig, e tenho o block content.
Quando renderizo o template, tenho o seguinte erro:


Twig_Error_Runtime: An exception has been thrown during the rendering of a template ("Accessed request service outside of request scope. Try moving that call to a before handler or controller.") in "index.php".


RuntimeException: Accessed request service outside of request scope. Try moving that call to a before handler or controller.


Observeção: O template renderiza corretamente quando eu não utilizo o extends layout.

O que poderia ser?
 

Reply all
Reply to author
Forward
0 new messages