Thursday, July 5, 2012

Smarty Template Engine using PHP

Smarty Template Engine using PHP

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>

No comments:

Post a Comment