Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Como recuperar uma variável TSession em outra página HTML Olá pessoal, dei uma lida num post do Pablo de 2013 e não está funcionando para recuperar a variável TSession na nova Template4. O cenário é o seguinte: No HTML system_welcome_pt.html preciso recuperar a variável de uma seção {pedidosdia} que contem a quantidade de pedidos do dia. ...
AM
Como recuperar uma variável TSession em outra página HTML  
Olá pessoal, dei uma lida num post do Pablo de 2013 e não está funcionando para recuperar a variável TSession na nova Template4.

O cenário é o seguinte:

No HTML system_welcome_pt.html preciso recuperar a variável de uma seção {pedidosdia} que contem a quantidade de pedidos do dia.

<div class="info-box bg-pink hover-expand-effect"> <div class="icon"> <i class="material-icons">add_shopping_cart</i> </div> <div class="content"> <div class="text">NOVOS PEDIDOS</div> <div class="number count-to" data-from="0" data-to="125" data-speed="15" data-fresh-interval="20">{pedidosdia}</div> </div> </div>


Essa variavel já está declarada no index.php e visivel no arquivo layout.html:

$content = str_replace('{pedidosdia}', TSession::getValue('pedidosdia'), $content);


Testei no menu lateral que faz parte do layout.html e o valor {pedidosdia} aparece, porém no system_welcome_pt.html ela não aparece.

Alguém pode dar uma luz?



Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (9)


NR

Alan, acho que o problema aí é outro, pois o trecho {pedidosdia} deveria ser substituído mesmo que o TSession::getValue('pedidosdia') retorne nulo.

Em que arquivo você está executando esse replace?

Qualquer coisa poste a classe inteira.
AM

O replace está sendo feito no index.php

  1. <?php
  2. require_once 'init.php';
  3. $theme  $ini['general']['theme'];
  4. $class  = isset($_REQUEST['class']) ? $_REQUEST['class'] : '';
  5. $public in_array($class$ini['permission']['public_classes']);
  6. new TSession;
  7. if ( TSession::getValue('logged') )
  8. {
  9.     $content     file_get_contents("app/templates/{$theme}/layout.html");
  10.     $menu_string AdiantiMenuBuilder::parse('menu.xml'$theme);
  11.     $content     str_replace('{MENU}'$menu_string$content);
  12.     
  13.     if ((TSession::getValue('login') == 'admin') && isset($ini['general']['token']))
  14.     {
  15.         $content str_replace('{IF-BUILDER}'''$content);
  16.         $content str_replace('{/IF-BUILDER}',''$content);
  17.     }
  18. }
  19. else
  20. {
  21.     $content file_get_contents("app/templates/{$theme}/login.html");
  22. }
  23. $content  str_replace('{IF-BUILDER}''<!--'$content);
  24. $content  str_replace('{/IF-BUILDER}''-->'$content);
  25. $content  ApplicationTranslator::translateTemplate($content);
  26. $content  str_replace('{LIBRARIES}'file_get_contents("app/templates/{$theme}/libraries.html"), $content);
  27. $content  str_replace('{class}'$class$content);
  28. $content  str_replace('{template}'$theme$content);
  29. $content  str_replace('{username}',   TSession::getValue('username'), $content);
  30. $content  str_replace('{usermail}',   TSession::getValue('usermail'), $content);
  31. $content  str_replace('{avatar}',     TSession::getValue('avatar'), $content);
  32. //----------------------------------AQUI ESTÁ SENDO FEITO O REPLACE -----------------------------------//
  33. $content  str_replace('{pedidosdia}'TSession::getValue('pedidosdia'), $content);    
  34. //-----------------------------------------------------------------------------------------------------------------------------//
  35. $content  str_replace('{frontpage}',  TSession::getValue('frontpage'), $content);
  36. $content  str_replace('{query_string}'$_SERVER["QUERY_STRING"], $content);
  37. $css      TPage::getLoadedCSS();
  38. $js       TPage::getLoadedJS();
  39. $content  str_replace('{HEAD}'$css.$js$content);
  40. echo $content;
  41. if (TSession::getValue('logged') OR $public)
  42. {
  43.     if ($class)
  44.     {
  45.         $method = isset($_REQUEST['method']) ? $_REQUEST['method'] : NULL;
  46.         AdiantiCoreApplication::loadPage($class$method$_REQUEST);
  47.     }
  48. }
  49. else
  50. {
  51.     AdiantiCoreApplication::loadPage('LoginForm'''$_REQUEST);
  52. }
  53. </code>


system_wekcome_pt.html

<!--[main]--> <!-- Widgets --> <div class="row clearfix"> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12"> <div class="info-box bg-pink hover-expand-effect"> <div class="icon"> <i class="material-icons">add_shopping_cart</i> </div> <div class="content"> <div class="text">NOVOS PEDIDOS</div> //----------------------------------------------------------------------------------------------------------------------AQUI A VARIAVEL pedidosdia---// <div class="number count-to" data-from="0" data-to="125" data-speed="15" data-fresh-interval="20">{pedidosdia}</div> //-------------------------------------------------------------------------------------------------------------------------------------------------------------------// </div> </div> </div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12"> <div class="info-box bg-cyan hover-expand-effect"> <div class="icon"> <i class="material-icons">shopping_cart</i> </div> <div class="content"> <div class="text">PEDIDOS LIBERADOS</div> <div class="number count-to" data-from="0" data-to="257" data-speed="1000" data-fresh-interval="20">55</div> </div> </div> </div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12"> <div class="info-box bg-light-green hover-expand-effect"> <div class="icon"> <i class="material-icons">forum</i> </div> <div class="content"> <div class="text">NOVAS MENSAGENS</div> <div class="number count-to" data-from="0" data-to="243" data-speed="1000" data-fresh-interval="20">32</div> </div> </div> </div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12"> <div class="info-box bg-orange hover-expand-effect"> <div class="icon"> <i class="material-icons">notifications_active</i> </div> <div class="content"> <div class="text">NOVAS NOTIFICAÇÕES</div> <div class="number count-to" data-from="0" data-to="1225" data-speed="1000" data-fresh-interval="20">20</div> </div> </div> </div> </div> <!-- #END# Widgets --> <!--[/main]-->


WelcomeView.class.php

/**
* WelcomeView
*
* @version 1.0
* @package control
* @author Pablo Dall'Oglio
* @copyright Copyright (c) 2006 Adianti Solutions Ltd. (www.adianti.com.br)
* @license www.adianti.com.br/framework-license
*/
class WelcomeView extends TPage
{
/**
* Class constructor
* Creates the page
*/
function __construct()
{
parent::__construct();

$html1 = new THtmlRenderer('app/resources/system_welcome_pt.html');

// replace the main section variables
$html1->enableSection('main', array());

//$panel1->add($html1);

$panel1 = new TPanelGroup('Seja Bem-vindo!');
$panel1->add($html1);

// container
$container = new TVBox;
$container->style = 'width: 100%';
$container->add($this->form);
$container->add($panel1);
parent::add($container);

}
}


Estes são os 3 arquivos envolvidos
NR

Alan, usando o THtmlRenderer, o replace deve ser feito dentro da classe WelcomeView e não no index. Veja o exemplo do tutor:
adianti.com.br/framework_files/tutor/index.php?class=TemplateViewBas
AM

Nataniel, já tentei desta forma e não obtive suscesso. Veja:

$html1 = new THtmlRenderer('app/resources/system_welcome_pt.html'); $session = array(); $session['pedidosdia'] = TSession::getValue('pedidosdia'); // replace the main section variables $html1->enableSection('main', $session);


O resultado na exibição no html continua o mesmo, exibindo o nome do marcador {pedidosdia} e não o valor do seu conteúdo.

O estranho é que declaramos a variável no index.html e seu conteudo é visivel no layout.html, já no system_welcome_pt.html não, mesmo dando o replace no WelcomeView.
AM

Deculpe, leia-se index.php onde digo index.html.
NR

Está faltando o $ no html:
  1. <?php
  2. <div class="number count-to" data-from="0" data-to="125" data-speed="15" data-fresh-interval="20">{$pedidosdia}</div>
  3. ?>
AM

Funcionou Nataniel, porém, não entendi pq no layout.html funciona sem o $ no html.

Consigo imprimir junto com {username} o valor de {pedidosdia} sem o $

  1. <?php
  2.  <div class="name" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{username} {pedidosdia}</div>
  3. ?>


Poderia me explicar? Só para maior entendimento do funcionamento do template no framework.

Do mais, obrigado pela ajuda
NR

Alan, são coisas distintas.

No index.php a substituição é feita diretamente, usando o comando str_replace em uma string. A classe THtmlRenderer funciona de outra maneira. Você não faz o replace diretamente, é necessário passar um array com as modificações desejadas e a classe se encarrega de fazer os replaces.
AM

Show Nataniel, eu imaginei isso, continuo estudando as classes do Adianti, é muita coisa e muitas dúvidas.

Vc faz parte da equipe da Adianti?

Vlew pela explicação, obrigado!