Closed rafaelkapela closed 8 years ago
@rafaelkapela, você tem que primeiro declarar os templates, e depois adicionar a variável, se quiser que ela funcione em todos os HTMLs.
@raelgc, o problema é que na estrutura atual do meu sistema, não dá pra declarar todos os templates antes das variaveis.
Se o usuário entra, por exemplo, na página perfil.php. Este arquivo chamará o _header.php (onde fica os cabeçalhos e o template principal) pra só depois chamar o template perfil.html
_header.php
$tpl = new Template($dir."_main.html");
$tpl->addFile("MENU", $dir."_menu.html");
$tpl->variavel1 = "ok";
perfil.php
require_once('_header.php');
$tpl->addFile("CONTEUDO", $dir."perfil.html");
$tpl->variavel2 = "ok";
$tpl->show();
Desta maneira a variavel1, nem nenhuma antes do addFile, já não funcionarão...
Por que não mover $tpl->$tpl->variavel1 = "ok";
pra depois do addFile to
perfil.html? Ele sendo adicionado ou não, a variável existe e aí será
setada pra ambos.
2015-05-22 13:00 GMT-03:00 rafaelkapela notifications@github.com:
@raelgc https://github.com/raelgc, o problema é que na estrutura atual do meu sistema, não dá pra declarar todos os templates antes das variaveis.
Se o usuário entra, por exemplo, na página perfil.php. Este arquivo chamará o _header.php (onde fica os cabeçalhos e o template principal) pra só depois chamar o template perfil.html Exemplo:
_header.php ´´´ $tpl = new Template($dir."_main.html"); $tpl->addFile("MENU", $dir."_menu.html"); $tpl->variavel1 = "ok"; ´´´
perfil.php ´´´ require_once('_header.php'); $tpl->addFile("CONTEUDO", $dir."perfil.html"); $tpl->variavel2 = "ok"; $tpl->show(); ´´´
Desta maneira a variavel1, nem nenhuma antes do addFile, já não funcionarão...
— Reply to this email directly or view it on GitHub https://github.com/raelgc/template/issues/5#issuecomment-104698205.
Rael Gugelmin Cunha Cel: 16 9-9163-5006 Res: 16 3413-8577 http://www.linkedin.com/in/raelcunha https://twitter.com/rael_gc https://github.com/raelgc https://plus.google.com/+rael_gc http://stackoverflow.com/users/1604312/rael-gugelmin-cunha
@raelgc Fiz um teste, movendo as varíaveis do _header.php pra penúltima linha, apenas atrás do $tpl->show(); e continuou sem funcionar.
As variáveis funcionam no arquivo principal, mas elas mesmos não funcionam nos arquivos adicionados com addFile...
Vou tentar mudar um pouco a estrutura dos arquivos, chamando com include ao invés de require, mais tarde posto o resultado...
@raelgc Minhas variaveis não estão sendo impressas quando integro partes do layout: //index.php
<?php
require_once("lib/raelgc/view/Template.php");
use raelgc\view\Template;
$tpl = new Template('layout.html');
$imgslide = array(
array("diretorio" => "teste", "alt" => "Caminhão - Chassi estendido"),
array("diretorio" => "teste", "alt" => "Trilhos de aluminio")
);
$tpl->addFile("HEADER", "partes//header.php");
$tpl->addFile("SLIDE", "partes//slide.php");
foreach($imgslide as $p){
$tpl->DIRETORIO = $p["diretorio"];
$tpl->ALT = $p["alt"];
$tpl->block("BLOCK_DADOS");
}
$tpl->addFile("SEARCH", "partes//search.php");
$tpl->addFile("FOOTER", "partes//footer.php");
$tpl->show();
?>
//slide.php
<!-- BEGIN BLOCK_DADOS -->
<div class="slide" style="background-image: url('img/slide/background1.jpeg');">
<div class="inner">
<div class="container">
<div class="banner-wrapper">
<div class="banner">
<div class="before">$480000</div>
Top Cars: Mercedes S Class {DIRETORIO}
</div> <!-- end .banner -->
</div> <!-- end .banner-wrapper -->
<a href="details.html" class="button border white xsmall">{ALT}</a>
</div> <!-- end .container -->
</div> <!-- end .inner -->
</div> <!-- end .slide -->
<!-- END BLOCK_DADOS -->
//layout.html
<!DOCTYPE html>
<html lang="pt_BR">
<head>
<body>
{HEADER}
{SLIDE}
{SEARCH}
{FOOTER}
</body>
</html>
@rafaelkapela Conseguiu resolver? :)
@raelgc Consegui sim! Mas já abri um outro issue hehe
Quando declaro uma varíavel a ser utilizada no template principal, ela funciona perfeitamente. Porém, quando tento chamar a mesma varíavel dentro de um outro arquivo chamado pelo addFile(), ela não funciona.
Exemplo:
teste.php
main.html
conteudo.html