SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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
 

Destacado

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
 

Destacado (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 a PHPTAL with CakePHP

Similar a 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
 

Más de 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
 

Más de 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スピードクッキング
 

Último

So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 

Último (20)

So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 

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) }