0
Posted September 6, 2011 by Bandish Patel in PHP
 
 

Smarty Template Engine using PHP – Tutorials


Smarty is a template engine for the PHP development language.

Why use Smarty?

-Separates the presentation logic from business logic ( Code and design are seperated)
-If we use core PHP with mixed with HTML then mess to manage.
-No PHP knowledge is required to manage smarty templates.
-Web designer and PHP developers can easily work and don’t blame each other. ( When they develop a big websites )

Smarty offers tools
– granular data caching
– template inheritance
– functional sandboxing to name a few

Where to find?

Download a package from smarty.net/download with your compatible PHP version.

How to install?
Unzip the downloaded smarty file into your appserv/www folder and run the application.

Basic syntax in the smarty
In the index.php file (In the root folder of your application )

a) Include the smarty class ( Which is libs folder).
require(‘libs/Smarty.class.php’);
b) Create object to the that smarty class
$smarty = new Smarty;
c) Assign variables
$smarty->assign(“var_name”, “Smarty”);

Here:
var_name” is to use in the smarty template ( .tpl file)
Smarty” is the value to that

Add Styles and Javascript files in templates files ( .tpl files)

{literal}
<link rel="stylesheet" href="css/style.css" type="text/css">
<script>
function display(){
document.write(“Welcome to smarty”);
}
</script>
{ /literal}

Control Structure in smarty

Conditions


{if (condition)}
----- statements ----
{/if} 

{if (condition)}
----- statements ----
{else}
----- statements ----
{/if}

{if (condition)}
----- statements ----
{elseif (condition)}
----- statements ----
{/if}
{/if}

 

in the conditions: “eq” is for “=”, “neq” is for “!=”

Loops


{section name=i loop=$ptquestionary}
{$ptquestionary[i]}
{/section}
Develop a simple application using smarty : User registration process.

Database


CREATE TABLE USERS (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
fullname VARCHAR( 255 ) NOT NULL ,
user_name VARCHAR( 255 ) NOT NULL ,
password VARCHAR( 255 ) NOT NULL ,
created_on TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
NOT NULL DEFAULT CURRENT_TIMESTAMP
);

Config.php


<?php
$dbHost = “localhost”;
$dbUser = ”username”;
$dbPassword=”password”;
$dbName=”database”;
$con = mysql_connect($dbHost,$dbUser,$dbPassword);
$sel = mysql_select_db($dbName,$con) or mysql_error();
?>

Index.php


<?php
include(“libs/Smarty.class.php”);
include(“config.php”);
$smarty = new Smarty;
$smarty->debugging = true;
$smarty->caching = true;
$smarty->cache_lifetime = 120;
$smarty->assign("title", "User Registration using Smarty application");
$smarty->display('index.tpl');
?>

register.php


<?php
include("config.php");
if(isset($_POST))
{
$query = "INSERT INTO USERS(fullname,user_name,password)   VALUES (' ".mysql_escape_string($_POST['fullname'])."', '".mysql_escape_string($_POST['user_name'])."','".md5($_POST['password'])."')";
$result =  mysql_query($query);
if($result)
{
echo "<script>window.location='index.php?msg=successfully inserted ';</script>";
}
}
?>
Templates files

header.tpl


<HTML>
<HEAD>
<TITLE>{$title}</TITLE>
{literal}
<style type="text/css">
body{
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
color:#333333;
}
</style>
{/literal}
</HEAD>
<BODY >

index.tpl

{include file=”header.tpl” title={$title}}
<form method=”post” action=”register.php”>
<div>
<div>Name : <input type=”text” name=”fullname” id=”fullname”></div>
<div>User Name : <input type=”text” name=”user_name” id=”user_name”></div>
<div>Password : <input type=”text” name=”password” id=”password”></div>
<div><input type=”submit” name=”submit” value=”submit” ></div>
</div>
</form>
{include file=”footer.tpl“}

footer.tpl

</BODY>
</HTML>


Bandish Patel