vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   eval template + fetch_template (https://vborg.vbsupport.ru/showthread.php?t=231063)

Vaupell 12-24-2009 12:54 PM

eval template + fetch_template
 
Hi guys,,

Trying to figure out how precisely vb4 works compared to vb3.
cause not many syntaxes i used to use in *.php appear to be
working on vb4, when fetching and sending data between
teplates and db..

as a exsample, to experiment and learn a little
ive setup a small test product..

Goal : list userid's, username's, emails
Going through each step and makeing my notes ofcourse.

templates and php all set to go, except
im getting a error when i try to eval the data and fetch a template..

Error is fetch_template('$dbtestrow') . '");
PHP Code:

if ($_REQUEST['do'] == 'main')
{

$emailresult =$vbulletin->db->query_read("SELECT userid, username, email FROM " TABLE_PREFIX "user ORDER BY userid");
while (
$row $vbulletin->db->fetch_array($emailresult))
  {
      
$userid htmlspecialchars_uni($row['userid']);
    
$username htmlspecialchars_uni($row['username']);
    
$usermail htmlspecialchars_uni($row['email']);
    
    eval(
'$dbtestdata("' fetch_template('$dbtestrow') . '");');
  }

// original print : 
// eval('print_output("' . fetch_template('dbtesttemplate) . '");');

// vb4 template ; may need to be changed.. 
 
$templater vB_Template::create('dbtesttemplate');
 
$templater->register_page_templates();
 
$templater->register('navbar'$navbar);
 
$templater->register('pagetitle'$pagetitle);
 
print_output($templater->render());


so when i try to run it, i get the error that eval needs to be replaced with vb:template

Error :
Warning: fetch_template() calls should be replaced by the vB_Template class in [path]/includes/functions.php on line

cant find info on vb_template()..

help..

question on vbcom How to upgrade vb3 code

Lynne 12-24-2009 01:38 PM

You just need to change it to be like what you did for the template dbtesttemplate - you create it, register variables for it, then render it. Only difference is, you won't do print_output, you'll just assign it to a varialbe:
PHP Code:

$dbtestdata .= $templater->render(); 


Vaupell 12-24-2009 02:04 PM

since im creating an array, would i then need to put the variable register inside the
while loop, or just outside just before it render.. ?

im creating the table rows with the template dbtestrow
template dbtestrow :
Code:

        <tr align="center">
          <td>$userid </td><td>$username</td> <td>$usermail</td>
        </tr>

and i call the eval function from the main template

part of dbtesttemplate :

Code:

<br /><table align="center" border="1">
<tr class="blockhead"><td>Welcome to test database page</td></tr>
<tr></tr><tr></tr>

<!-- get rows -->
$dbtestdata

<!-- close table -->
</table><br />

so my new php would be something like

PHP Code:

while ($row $vbulletin->db->fetch_array($emailresult))
  {
      
$userid htmlspecialchars_uni($row['userid']);
    
$username htmlspecialchars_uni($row['username']);
    
$usermail htmlspecialchars_uni($row['email']);
    
  
// vb3 :  eval('$dbtestdata("' . fetch_template('$dbtestrow') . '");');
  
$dbtestdata vb_template::create($dbtestrow);

  }
  
$dbtestdata->register('userid'$userid);  
  
$dbtestdata->register('username'$username);  
  
$dbtestdata->register('usermail'$usermail);  
 
 
$templater vB_Template::create('dbtesttemplate');
 
$templater->register_page_templates();
 
$templater->register('navbar'$navbar);
 
$templater->register('pagetitle'$pagetitle);
 
print_output($templater->render()); 

or did i (excuse my expression) fall of the wagon in the last cornor. :rolleyes:

Lynne 12-24-2009 02:14 PM

You cannot register multiple variables like that. You need to do it like you did for the other template at the bottom. And,you still forgot the line I told you to add. Oh, and if you are then using that template in your bottom template, you need to register the variable there also.

Have you seen this - [vB4] Rendering templates and registering variables - a short guide


All times are GMT. The time now is 01:41 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01625 seconds
  • Memory Usage 1,744KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (3)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (4)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete