SlideShare a Scribd company logo
1 of 45
Download to read offline
PHPTAL with CakePHP
       July 2011
           CakePHP
About Me


•   WEB Developer / PHP / CakePHP / HTML / CSS / jQuery / MySQL / iPhone /
    /     /    /     /      /             /          / no more

•   BLOG: http://php-tips.com/
•   TWITTER: @nojimage
Template Engine
Template Engine

•                                     HTML


• Smarty, Twig, PHP, PHPTAL, etc...
Data               Template




       Template
        Engine




        HTML,
       RSS Feed,
         etc...
PHPTAL
TAL

•                            XHTML(XML)


• http://wiki.zope.org/ZPT/TAL
Templae Attribute Language

•                            XHTML(XML)


• http://wiki.zope.org/ZPT/TAL
PHPTAL

• Zope      TAL    PHP

•

    http://phptal.org/
•

    http://phptal.org/manual/ja/
code
Data
$people = array(
    array(
        ‘name’ => ‘Taro Yamada’,
        ‘phone’ => ‘090-0000-0000’
    ),
    array(
        ‘name’ => ‘Hisateru Tanaka’,
        ‘phone’ => ’06-XXXX-XXXX’
    ),
    // ...
);
HTML
<table>
    <tr>
         <th>Name</th>
         <th>Phone</th>
    </tr>
    <tr>
         <td>person's name</td>
         <td>person's phone</td>
    </tr>
    <tr>
         <td>sample name</td>
         <td>sample phone</td>
    </tr>
</table>
<table>
    <tr>
         <th>Name</th>
         <th>Phone</th>
    </tr>
    <tr>
         <td>person's name</td>
         <td>person's phone</td>
    </tr>
    <tr>
         <td>sample name</td>
         <td>sample phone</td>
    </tr>
</table>
PHP
<table>
    <tr>
         <th>Name</th>
         <th>Phone</th>
    </tr>
    <?php foreach ($people as $person) : ?>
    <tr>
         <td><?php echo $person['name']; ?></td>
         <td><?php echo $person['phone']; ?></td>
    </tr>
    <?php endforeach; ?>
</table>
Smarty
   is not smart...
<table>
    <tr>
         <th>Name</th>
         <th>Phone</th>
    </tr>
    {foreach from=$people item=person}
    <tr>
         <td>{$person.name}</td>
         <td>{$person.phone}</td>
    </tr>
    {/foreach}
</table>
PHPTAL
<table>
    <tr>
         <th>Name</th>
         <th>Phone</th>
    </tr>
    <tr tal:repeat="person people">
         <td tal:content="person/name">person's
name</td>
         <td tal:content="person/phone">person's
phone</td>
    </tr>
    <tr tal:replace="">
         <td>sample name</td>
         <td>sample phone</td>
    </tr>
</table>
<table>
    <tr>
         <th>Name</th>
         <th>Phone</th>
    </tr>
    <tr tal:repeat="person people">
         <td tal:content="person/name">person's

   HTML
name</td>
         <td tal:content="person/phone">person's
phone</td>
    </tr>
    <tr tal:replace="">
         <td>sample name</td>
         <td>sample phone</td>
    </tr>
</table>
in Browser
in Browser
in Browser
in Browser




HTML
HTML
PHPTAL

•

    1. tal:define          7. tal:attributes
    2. tal:condition      8. tal:on-error
    3. tal:repeat         9. metal:define-macro
    4. tal:omit-tag       10. metal:use-macro
    5. tal:replace        11. metal:define-slot
    6. tal:content        12. metal:fill-slot
PHPTAL is Smart!
PHPTAL
PHPTAL
  with
CakePHP
CakePHP-TALTAL
     plugin
https://github.com/nojimage/
     CakePHP-TALTAL
Feature
•       html, xhtml, zpt
    PHPTAL
•       ctp     PHP
      OK
•
Feature
• url,   fullurl
• cake:helper
Installation
• git   clone or download
• set   to plugins/taltal
• write   to AppController
class AppController extends Controller {
    // ...(snip)

    public $view = 'Taltal.Phptal';
    // ...(snip)
}
Let’s Try PHPTAL!!

      PHPTAL
CakePHP-TALTAL
• https://github.com/nojimage/CakePHP-TALTAL

• since   2011/06/01
• version   0.3.1
PHPTAL with CakePHP
PHPTAL with CakePHP

More Related Content

What's hot

Teri's Resume
Teri's ResumeTeri's Resume
Teri's Resumeteri louk
 
Can WordPress really do that? A case study of vierderduer.no
Can WordPress really do that? A case study of vierderduer.noCan WordPress really do that? A case study of vierderduer.no
Can WordPress really do that? A case study of vierderduer.noMorten Rand-Hendriksen
 
Secure your folder with password/without any software
Secure your folder with password/without any softwareSecure your folder with password/without any software
Secure your folder with password/without any softwareMohd Sajjad
 
Using MySQL in a web-scale environment
Using MySQL in a web-scale environmentUsing MySQL in a web-scale environment
Using MySQL in a web-scale environmentDavid Landgren
 
Xslate sv perl-2013-7-11
Xslate sv perl-2013-7-11Xslate sv perl-2013-7-11
Xslate sv perl-2013-7-11Goro Fuji
 
HTML Templates Using Clear Silver
HTML Templates Using Clear SilverHTML Templates Using Clear Silver
HTML Templates Using Clear SilverPaulWay
 
Popstat1 sh
Popstat1 shPopstat1 sh
Popstat1 shBen Pope
 

What's hot (8)

Teri's Resume
Teri's ResumeTeri's Resume
Teri's Resume
 
Can WordPress really do that? A case study of vierderduer.no
Can WordPress really do that? A case study of vierderduer.noCan WordPress really do that? A case study of vierderduer.no
Can WordPress really do that? A case study of vierderduer.no
 
Secure your folder with password/without any software
Secure your folder with password/without any softwareSecure your folder with password/without any software
Secure your folder with password/without any software
 
Using MySQL in a web-scale environment
Using MySQL in a web-scale environmentUsing MySQL in a web-scale environment
Using MySQL in a web-scale environment
 
Xslate sv perl-2013-7-11
Xslate sv perl-2013-7-11Xslate sv perl-2013-7-11
Xslate sv perl-2013-7-11
 
HTML Templates Using Clear Silver
HTML Templates Using Clear SilverHTML Templates Using Clear Silver
HTML Templates Using Clear Silver
 
Popstat1 sh
Popstat1 shPopstat1 sh
Popstat1 sh
 
PHP Filing
PHP Filing PHP Filing
PHP Filing
 

Viewers also liked

Cake php4designers
Cake php4designersCake php4designers
Cake php4designersSeiji Ogawa
 
MVCのVを極めしWebデザイナーになる - CakePHP勉強会
MVCのVを極めしWebデザイナーになる - CakePHP勉強会MVCのVを極めしWebデザイナーになる - CakePHP勉強会
MVCのVを極めしWebデザイナーになる - CakePHP勉強会Kazuhiro Hara
 
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月VirtualTech Japan Inc.
 
App Dynamics case study on U-NEXT at AppJam 2015 in TOKYO
App Dynamics case study on U-NEXT at AppJam 2015 in TOKYOApp Dynamics case study on U-NEXT at AppJam 2015 in TOKYO
App Dynamics case study on U-NEXT at AppJam 2015 in TOKYOTakatoshi Kakimoto
 
安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016Hiroshi Tokumaru
 
PHPの今とこれから2016
PHPの今とこれから2016PHPの今とこれから2016
PHPの今とこれから2016Rui Hirokawa
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説do_aki
 

Viewers also liked (7)

Cake php4designers
Cake php4designersCake php4designers
Cake php4designers
 
MVCのVを極めしWebデザイナーになる - CakePHP勉強会
MVCのVを極めしWebデザイナーになる - CakePHP勉強会MVCのVを極めしWebデザイナーになる - CakePHP勉強会
MVCのVを極めしWebデザイナーになる - CakePHP勉強会
 
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月
 
App Dynamics case study on U-NEXT at AppJam 2015 in TOKYO
App Dynamics case study on U-NEXT at AppJam 2015 in TOKYOApp Dynamics case study on U-NEXT at AppJam 2015 in TOKYO
App Dynamics case study on U-NEXT at AppJam 2015 in TOKYO
 
安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016
 
PHPの今とこれから2016
PHPの今とこれから2016PHPの今とこれから2016
PHPの今とこれから2016
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 

Similar to PHPTAL with CakePHP

Similar to PHPTAL with CakePHP (20)

Xml and xslt
Xml and xsltXml and xslt
Xml and xslt
 
XML and Web Services with PHP5 and PEAR
XML and Web Services with PHP5 and PEARXML and Web Services with PHP5 and PEAR
XML and Web Services with PHP5 and PEAR
 
XML Transformations With PHP
XML Transformations With PHPXML Transformations With PHP
XML Transformations With PHP
 
APEX Themes and Templates
APEX Themes and TemplatesAPEX Themes and Templates
APEX Themes and Templates
 
Introduction To Xml
Introduction To XmlIntroduction To Xml
Introduction To Xml
 
Forum Presentation
Forum PresentationForum Presentation
Forum Presentation
 
Web Scraper Shibuya.pm tech talk #8
Web Scraper Shibuya.pm tech talk #8Web Scraper Shibuya.pm tech talk #8
Web Scraper Shibuya.pm tech talk #8
 
Inroduction to XSLT with PHP4
Inroduction to XSLT with PHP4Inroduction to XSLT with PHP4
Inroduction to XSLT with PHP4
 
Html5 Overview
Html5 OverviewHtml5 Overview
Html5 Overview
 
Phing - A PHP Build Tool (An Introduction)
Phing - A PHP Build Tool (An Introduction)Phing - A PHP Build Tool (An Introduction)
Phing - A PHP Build Tool (An Introduction)
 
13. view data
13. view data13. view data
13. view data
 
PHP Presentation
PHP PresentationPHP Presentation
PHP Presentation
 
Changing Template Engine
Changing Template EngineChanging Template Engine
Changing Template Engine
 
BITM3730 9-13.pptx
BITM3730 9-13.pptxBITM3730 9-13.pptx
BITM3730 9-13.pptx
 
REST, HTTP, and the PATCH verb (with kittens)
REST, HTTP, and the PATCH verb (with kittens)REST, HTTP, and the PATCH verb (with kittens)
REST, HTTP, and the PATCH verb (with kittens)
 
REST dojo Comet
REST dojo CometREST dojo Comet
REST dojo Comet
 
Tornado
TornadoTornado
Tornado
 
20120424 b
20120424 b20120424 b
20120424 b
 
Lab final
Lab finalLab final
Lab final
 
PHPTAL introduction
PHPTAL introductionPHPTAL introduction
PHPTAL introduction
 

More from Takashi Nojima

Composerはじめました
ComposerはじめましたComposerはじめました
ComposerはじめましたTakashi Nojima
 
jQuery プラグイン作成入門
jQuery プラグイン作成入門jQuery プラグイン作成入門
jQuery プラグイン作成入門Takashi Nojima
 
CakePHP SessionAcl Component
CakePHP SessionAcl ComponentCakePHP SessionAcl Component
CakePHP SessionAcl ComponentTakashi Nojima
 
TwitterKitではじめる OAuthスピードクッキング
TwitterKitではじめる OAuthスピードクッキングTwitterKitではじめる OAuthスピードクッキング
TwitterKitではじめる OAuthスピードクッキングTakashi Nojima
 

More from Takashi Nojima (6)

Composerはじめました
ComposerはじめましたComposerはじめました
Composerはじめました
 
Plugin for CakePHP2.0
Plugin for CakePHP2.0Plugin for CakePHP2.0
Plugin for CakePHP2.0
 
jQuery プラグイン作成入門
jQuery プラグイン作成入門jQuery プラグイン作成入門
jQuery プラグイン作成入門
 
CakePHP SessionAcl Component
CakePHP SessionAcl ComponentCakePHP SessionAcl Component
CakePHP SessionAcl Component
 
Mixi kit
Mixi kitMixi kit
Mixi kit
 
TwitterKitではじめる OAuthスピードクッキング
TwitterKitではじめる OAuthスピードクッキングTwitterKitではじめる OAuthスピードクッキング
TwitterKitではじめる OAuthスピードクッキング
 

Recently uploaded

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Recently uploaded (20)

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

PHPTAL with CakePHP

  • 1. PHPTAL with CakePHP July 2011 CakePHP
  • 2. About Me • WEB Developer / PHP / CakePHP / HTML / CSS / jQuery / MySQL / iPhone / / / / / / / / no more • BLOG: http://php-tips.com/ • TWITTER: @nojimage
  • 4. Template Engine • HTML • Smarty, Twig, PHP, PHPTAL, etc...
  • 5. Data Template Template Engine HTML, RSS Feed, etc...
  • 7. TAL • XHTML(XML) • http://wiki.zope.org/ZPT/TAL
  • 8. Templae Attribute Language • XHTML(XML) • http://wiki.zope.org/ZPT/TAL
  • 9. PHPTAL • Zope TAL PHP • http://phptal.org/ • http://phptal.org/manual/ja/
  • 10. code
  • 11.
  • 12. Data
  • 13. $people = array( array( ‘name’ => ‘Taro Yamada’, ‘phone’ => ‘090-0000-0000’ ), array( ‘name’ => ‘Hisateru Tanaka’, ‘phone’ => ’06-XXXX-XXXX’ ), // ... );
  • 14. HTML
  • 15. <table> <tr> <th>Name</th> <th>Phone</th> </tr> <tr> <td>person's name</td> <td>person's phone</td> </tr> <tr> <td>sample name</td> <td>sample phone</td> </tr> </table>
  • 16. <table> <tr> <th>Name</th> <th>Phone</th> </tr> <tr> <td>person's name</td> <td>person's phone</td> </tr> <tr> <td>sample name</td> <td>sample phone</td> </tr> </table>
  • 17. PHP
  • 18. <table> <tr> <th>Name</th> <th>Phone</th> </tr> <?php foreach ($people as $person) : ?> <tr> <td><?php echo $person['name']; ?></td> <td><?php echo $person['phone']; ?></td> </tr> <?php endforeach; ?> </table>
  • 19. Smarty is not smart...
  • 20. <table> <tr> <th>Name</th> <th>Phone</th> </tr> {foreach from=$people item=person} <tr> <td>{$person.name}</td> <td>{$person.phone}</td> </tr> {/foreach} </table>
  • 22. <table> <tr> <th>Name</th> <th>Phone</th> </tr> <tr tal:repeat="person people"> <td tal:content="person/name">person's name</td> <td tal:content="person/phone">person's phone</td> </tr> <tr tal:replace=""> <td>sample name</td> <td>sample phone</td> </tr> </table>
  • 23. <table> <tr> <th>Name</th> <th>Phone</th> </tr> <tr tal:repeat="person people"> <td tal:content="person/name">person's HTML name</td> <td tal:content="person/phone">person's phone</td> </tr> <tr tal:replace=""> <td>sample name</td> <td>sample phone</td> </tr> </table>
  • 28. HTML
  • 29.
  • 30. PHPTAL • 1. tal:define 7. tal:attributes 2. tal:condition 8. tal:on-error 3. tal:repeat 9. metal:define-macro 4. tal:omit-tag 10. metal:use-macro 5. tal:replace 11. metal:define-slot 6. tal:content 12. metal:fill-slot
  • 32.
  • 34.
  • 35.
  • 37. CakePHP-TALTAL plugin
  • 39. Feature • html, xhtml, zpt PHPTAL • ctp PHP OK •
  • 40. Feature • url, fullurl • cake:helper
  • 41. Installation • git clone or download • set to plugins/taltal • write to AppController class AppController extends Controller { // ...(snip) public $view = 'Taltal.Phptal'; // ...(snip) }