ការបង្កើត និង ប្រើប្រាស់ Template នៅក្នុង​ Symfony

ប្រព័ន្ធពុម្ភ រឺក៏ templating system គ្រាន់តែជាផ្នែកមួយក្នុងចំនោមឧបករណ៏ (tools) ជាច្រើនទៀតក្នុង Symfony ហើយមុខងាររបស់វាគឺសាមញ្ញដែលអាចអោយយើងបង្ហាញនូវ HTML ចេញមកក្រៅដែលមានលក្ខណៈ dynamic និង ស្មុគស្មាញដូចនេះនៅទីបំផុតវានឹងធ្វើការបញ្ជូនទៅកាន់អ្នកប្រើប្រាស់ និងបានផ្ញើរក្នុងអ៊ីម៉ែលរឺក៏អ្វីផ្សេងទៀត។

១ Templates៖

Template គ្រាន់តែជាឯកសារអត្ថបទមួយដែលអាចបង្កើតនូវទ្រង់ទ្រាយអត្ថបទដូចជា (HTML, XML, CSV, LaTeX …) ប្រភេទ template ដែលពេញនិយមជាងគេគឺ PHP template ជាឯកសារអត្ថបទដែលចែកដោយ PHP ដែលមានលាយនូវអត្ថបទនិងកូដ PHP ។

template1

កញ្ចប់ Symfony ដែលពេញនិយមបំផុតនោះគឺ Twig ។ Twig អាចអោយអ្នកសរសេរសង្ខេប និង template ដែលគួរអោយចង់មើលសម្រាប់ web designers ហើយមានពេលខ្លះ Twig គឺពេញនិយមជាង PHP templates ៖

template-2

Twig កំណត់នូវសញ្ញាពិសេស ៣ប្រភេទ៖

{{…}} “និយាយពីអ្វីម្យ៉ាង រឺក៏ Says Something” ព្រីនអញ្ញត្តិរឺក៏លទ្ធផលនៃ expression  ទៅកាន់  template ។

{%…%} “ធ្វើអ្វីមួយ រឺក៏ Does Something” tag ដែលគ្រប់គ្រងតក្កនៃ template វាគឺប្រើក្នុងការប្រតិបត្តិការ statements  ដូចជា for-loops ។

{#…#} “អធិប្បាយអ្វីមួយ រឺក៏ Comment Something” វាជាការសមមូលនៃសញ្ញា PHP /* comment */ ។ វាប្រើដើម្បីបន្ថែមអធិប្បាយមួយរឺច្រើនបន្ទាត់។ អត្ថបទនៃការអធិប្បាយមិនត្រូវបានបង្ហាញនូវលើទំព័រឡើយ។

Twig ក៏ផ្ទុកនូវ filters ដែលជាអ្នកកែប្រែអត្ថបទមុននឹងបង្ហាញ។ ឧទាហរណ៏ខាងក្រោមគឺអញ្ញត្តិ title ធ្វើអោយអក្សរប្រែទៅជាធំនៅពេលបង្ហាញលទ្ធផល។

template-3

Twig មកជាមួយនូវតារាងនៃ tags, filters និង functions ដែលអាចប្រើប្រាស់បានតាំងពីដំបូង។ អ្នកអាចបន្ថែម filters, functions និងអ្វីផ្សេងទៀតជាច្រើនដែលជារបស់អ្នកតាមរយៈ Twig Extension ។ កូដ Twig អាចនឹងមើលទៅស្រដៀងទៅនឹងកូដ PHP , ភាពប៉ិនប្រសប់ និងភាពល្អផ្សេងៗគ្នា។ ឧទាហរណ៏ខាងក្រោមប្រើ for tag និង cycle functions ស្តង់ដារដើម្បីបង្ហាញ div tags ចំនួន ១០ ជាមួយនឹង classes odd, even ឆ្លាស់គ្នា៖

template-4

២ Twig Template Caching៖

Twig គឺលឿនព្រោះtemplate នីមួយៗគឺ compiled ទៅជា native PHP class និងcached. តែកុំបារម្ភ វាគឺកើតមានដោយស្វ័យប្រវត្តិនិងមិនតម្រូវអោយអ្នកធ្វើអ្វីនោះទេ ហើយខណៈពេលដែលអ្នកកំពុងសរសេរកូដ Twig គឺវៀងវៃក្នុងការ compile template របស់អ្នកម្ដងទៀតបន្ទាប់ពីអ្នកកែប្រែអ្វីមួយមានន័យថា Twig មានភាពលឿនក្នុងការផលិតតែងាយស្រួលប្រើក្នុងពេលដែលអ្នកសរសេរកូដ។

៣ Template Inheritance ហើយនិង Layouts៖

ជារឿយៗ templates នៅក្នុងគម្រោងចែករំលែកនូវធាតុទូទៅ រឺក៏ common elements ដូចជា header, footer, sidebar និងច្រើនទៀត។ ក្នុង Symfony បញ្ហានេះគឺគិតទៅលើភាពខុសគ្នាដូចជា template អាចតុបតែងដោយអ្វីមួយផ្សេង។ ដំណើរការនេះគឺដូចទៅនឹង PHP classes ចំណែក template inheritance អាចអោយអ្នកបង្កើតមូលដ្ឋាន “layout” template ដែលផ្ទុក common elements ទាំងអស់នៃតំបន់របស់អ្នកដែលកំណត់ជាប្លុក។ Child template អាច extend មូលដ្ឋានគ្រឺះនៃ layout ហើយលុប (override) លើប្លុករបស់វាណាមួយ។

បង្កើត base layout៖

Twig

template-5

PHP

template-6

Template នេះកំណត់ឯកសារ មូលដ្ឋាន HTML skeleton នៃទំព័រឈរធម្មតា២។ ឧទាហរណ៏នេះ {% block %} បីកន្លែងដែលកំណត់ title, sidebar និង body។ ប្លុកនីមួយៗប្រហែលជា overridden ដោយ child template រឺចាកចេញជាមួយនឹង implementation ដើមរបស់វា។ template ក៏អាចបង្ហាញដោយផ្ទាល់។

Child template គឺធ្វើរបៀបនេះ៖

Twig

template-7

PHP

template-8

នេះជាដំបូន្មានខ្លះៗដែលត្រូវចាំ ពេលធ្វើការជាមួយនឹង template inheritance៖

ប្រសិនអ្នកប្រើ {% extends %} នៅក្នុងtemplate វាត្រូវតែជា tag ទីមួយនៅក្នុង template នោះ។

អាចនឹងល្អ្បបសិនបើអ្នកមាន {% block %} tags ច្រើននៅក្នុង base templates របស់អ្នក។ ត្រូវចាំ child template មិនអាចកំណត់ parent ប្លុកទាំងអស់ទេដូចនេះអាចបង្កើត ប្លុកច្រើនក្នុង base templates តាមដែលអ្នកត្រូវការ។ អ្នកមានប្លុកកាន់តែច្រើន layout របស់អ្នកនឹងកាន់តែ flexible។

ប្រសិនបើរកឃើញថាមានអត្ថបទជាន់គ្នាអ្នកគួរតែយកអត្ថបទនោះចេញទៅកាន់ {% block %} នៅក្នុង parent template៕ ពេលខ្លះអ្នកអាចយកអត្ថបទចេញទៅកាន់ template ថ្មីនិង include វា។

ប្រសិនបើអ្នកត្រូវការយកអត្ថបទនៃប្លុកពី parent template អ្នកអាចប្រើ function {{parent()   }}។

template-9

៤ ឈ្មោះ Template ហើយនិង ទីតាំង៖

ជាទូទៅ template ពីរទីតាំងផ្សេងគ្នា៖

app/Resources/views/ គឺវាអាចផ្ទុកនូវ application-wide base templates ។

vendor/path/to/CoolBundle/Resources/views/ ប្រើនៅពេលដែលអ្នកចង់ចែករំលែកនូវ bundle។

៥ ពាក្យខាងចុងនៃ Template៖

រាល់ឈ្មោះ template គឺមានពីរ extensions ដែលកំណត់នូវទម្រង់និង engine នៃ template នោះ។template-10

៦ Tags ហើយនិង Helpers៖

Symfony ភ្ជាប់ bundled ជាមួយ Twig tags និង functions ពិសេសមួយចំនួនដែលធ្វើអោយអ្នកបង្កើត template មានភាពងាយស្រួល។ ក្នុង PHP, templating system ផ្ដល់នូវការពង្រីកយក helper system ដែលផ្ដល់មុខងារដ៏ពេញនិយមក្នុងtemplate context។ អ្នកបានឃើញរួចមកហើយនូវ Twig tags មួយចំនួនដែលមានដូចជា ( {% block %} និង {% extends %} ) នៅក្នុងឧទាហរណ៏ PHP helper ( $view[‘slots’] )។

៧ Including other Templates៖

ក្នុងការបង្កើត ប្រព័ន្ធមួយគឺចៀសមិនផុតពីការបញ្ចូល template នោះឡើយដូចនេះសូមអ្នកអនុវត្តន៏ដូចខាងក្រោម៖

ដំបូង គឺត្រូវបង្កើត template៖

Twig

template-11

PHP

template-12

បន្ទាប់មកគឺធ្វើការបញ្ចូល template ទៅកាន់ template មួយផ្សេងទៀត៖

Twig

template-13

PHP

template-14

៨ ការភ្ជាប់ទៅកាន់ទំព័រ៖

ដំបូងត្រូវបង្កើតទំព័រមួយឈ្មោះថា welcome

template-15

បន្ទាប់មកប្រើ function path របស់ Twig ដើម្បីធ្វើការភ្ជាប់

template-16

៩ ការភ្ជាប់ទៅកាន់ទ្រព្យ (Assets)៖

ដើម្បីបង្ហាញទ្រព្យដែលមាននៅក្នុង Symfony អ្នកត្រូវប្រើប្រាស់ asset Twig function៖

template-17

១០ ការបញ្ចូល Stylesheets និង JavaScript នៅក្នុង Twig៖

ដើម្បីហៅ stylesheets បានអ្នកត្រូវដាក់ក្នុង head tag ចំណែកឯ javascripts ត្រូវដាក់ខាងលើនៃ tag បិទនៃ body។

template-18