Logo Hardware.com.br
Kleber Costa
Kleber Costa General de Pijama Registrado
5.2K Mensagens 1 Curtida

Smarty, só dá pra fazer assim?

#1 Por Kleber Costa 01/04/2004 - 10:03
Pessoal, tô com um "problema" aqui, não é nada grave mas não tá legal como estou fazendo. É o seguinte:

eu preciso montar uma parte de layout.tpl(arquivo principal onde uso o método display) de uma forma onde o template varia. Por exemplo, vou listar 30 msgs pra exibir no html, sendo que numa consulta tal, eu só precise dos 5 primeiros. Meu template vai tá arrumado pra exibir 30, sendo que eu posso setar váriaveis NULL e perguntar se elas estiverem NULL naum exiba. Mas, e se eu tivesse que listar x msgs?

Eu fiz uma gambiarra, já que eu posso substituir váriáveis por blocos de código, tipo:

$Smarty -> assign("teste", "Teste");

lá no tpl tem: { $teste }

Eu saí concatenando o que precisava e setei uma variável igual a $teste no meu template e tá funcionando mas eu tô achando muito "tosca" essa gambiarra frown.png
Num tem como fazer isso sem precisar dessa gambiarra "maledita" naum? :lol:

Vou ficar sem participar do fórum até acabar de "descascar um abacaxi" me entregaram essa semana :? mas fico no aguardo sobre essa questão.
Kleber Costa
Kleber Costa General de Pijama Registrado
5.2K Mensagens 1 Curtida
#4 Por Kleber Costa
02/04/2004 - 10:34
Fala Roni!!! Vou explicar melhor oops.png

duvida.php

<?php

/*
* @Author Kleber Costa <kleber dot costa at gmx dot net>
* @Package #######
* @Version 1.0.0.0
* @Copyright Kleber Costa
*/


require("setup.php&quot;
require("class\MySQL.class.php&quot;

$Smarty = new Setup();
$Smarty -> assign("secao", "duvida&quot;

if ( isset($_GET["acao"]) and !empty($_GET["acao"]) ) {

$getAcao = addslashes( trim($_GET["acao"]) );

if ($getAcao == "enviarDuvida&quot {

$Smarty -> assign("htmlDuvida", "form&quot;

}

} else {

$MySQL = new MySQL();
$MySQL -> Connect();
$sqlQuery = "SELECT duvida.autor, duvida.assunto, duvida.conteudo, duvida.resposta FROM duvida LIMIT 7";
$result = mysql_query($sqlQuery) or die( mysql_error() );

while( $objeto = mysql_fetch_object($result) ){

$autor_ = $objeto -> autor;
$assunto_ = $objeto -> assunto;
$conteudo_ = $objeto -> conteudo;
$resposta_ = $objeto -> resposta;

$html .= "<div class=\"duvida\"> \n";
$html .= " <div class=\"assunto\"> \n";
$html .= " <label class=\"titulo\">$assunto_</label><br /> \n";
$html .= " <p>$conteudo_</p><br /> \n";
$html .= " <label>Autor - $autor_</label> \n";


if ( empty($resposta_) ) {
void;
} else {
$html .= " <hr /> \n";
$html .= " <label class=\"titulo\">Re: $assunto_</label><br /> \n";
$html .= " <p>$resposta_</p><br /> \n";
$html .= " <label>Autor - Fulano Cicrano</label> \n";
}

$html .= " </div> \n";
$html .= "</div> \n";


} // while

mysql_free_result($result);
$MySQL -> Disconnect();

$Smarty -> assign("htmlDuvida", $html);
}


$Smarty -> display("layout.tpl&quot;



?>


Esse código acima é meu duvida.php, naum tá muito claro caso c naum use o smarty mas dá pra ter uma idéia do que está acontecendo :wink:

tá vendo minha variável $html? ela é a gambiarra desse código frown.png

$Smarty -> assign("htmlDuvida", algumacoisa); é quem vai definir o corpo do html que vai ser exibido.

o conteúdo do meu duvida.tpl

{ if $htmlDuvida == "form" }
{ include file="duvida-form.tpl" }
{ else }
<h6>Para enviar sua dúvida clique <a href="?acao=enviarDuvida">aqui</a>.</h6><br />
{ $htmlDuvida }
{ /if }


Agora vem a parte + animada big_green.png

Meu problema é como setar variáveis no meu template onde essas variáveis ficam cacheadas em blocos de códigos html no template e "esperam" a hora de serem exibidas. Sem necessitar o uso de uma var como a $html que tá no meu código.

Esse código abaixo é um exemplo(uma parte), sem sentido(pq naum funciona), mas é só pra entender o que eu to querendo fazer:


while( $objeto = mysql_fetch_object($result) ){

$autor_ = $objeto -> autor;
$assunto_ = $objeto -> assunto;
$conteudo_ = $objeto -> conteudo;
$resposta_ = $objeto -> resposta;

$Smarty -> assign("autor", $autor_);
$Smarty -> assign("assunto", $assunto_);
$Smarty -> assign("conteudo", $conteudo_);
$Smarty -> assign("resposta", $resposta_);

.
.
.



Ufa, acabei :P
Salve! Ó terra dos altos coqueiros!
De belezas soberbo estendal!
Nova Roma dos bravos guerreiros
Pernambuco, imortal, imortal!


Linux User #262254
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal