ស្វែងយល់អំពី BrowserKit Component នៅក្នុង Symfony3

កាលពីអត្ថបទមុន យើងបានណែនាំអ្នកអំពី Asset Component រួចមកហើយ ចំណែកអត្ថបទនេះវិញ យើងនឹងណែនាំអ្នកអំពី component ដដែលតែទាក់ទងនឹង BrowserKit Component។ វាជាអ្នកក្លែងនូវឥរិយាបទនៃ web browser និងអនុញ្ញាតអោយអ្នកដើម្បីធ្វើការស្នើ និងចុចទៅលើតំណភ្ជាប់ហើយ submit forms នៃការស្នើ។

១) ការតម្លើង

អ្នកអាចតម្លើងនូវ component តាមរយៈ ២វិធី៖

ទី១ តម្លើងតាមរយៈ Composer (symphony/browser-kit នៅលើ Packagist)

ទី២ ប្រើប្រាស់នូវ official Git repository (https://github.com/symfony/browser-kit)

២) គន្លឹះនៃការប្រើប្រាស់

ក) បង្កើត Client

Component ផ្ដល់ត្រឹមតែ abstract client និងមិនផ្ដល់នូវ backend ដែលអាចប្រើប្រាស់បានសម្រាប់ HTTP layer នោះឡើយ។

ដើម្បីបង្កើត client ផ្ទាល់ខ្លួន អ្នកត្រូវ extend នូវ abstract Client class និង implement នូវ doRequest() method។ Method មួយនេះព្រមទទួលយកនូវការស្នើ និងធ្វើការឆ្លើយតបមកវិញ៖

ចំពោះការអនុវត្តន៏ដ៏សាមញ្ញនៃ browser ពឹងផ្អែកទៅលើ HTTP layer ហើយអ្នកអាចមើលទៅលើ Goutte បាន។ សម្រាប់ការអនុវត្តន៏ដែលផ្អែកទៅលើ HttpKernelInterface អ្នកអាចមើលទៅលើ Client ដែលបានផ្ដល់ដោយ HttpKernel component

ខ) បង្កើតការដាក់ស្នើ

សូមប្រើនូវ request() method ដើម្បីធ្វើការស្នើ HTTP។ ដំបូង arguments ចំនួន២ គឺជា HTTP method និង ស្នើនូវ URL៖

តម្លៃដែលបញ្ជូនត្រលប់មកវិញដោយ request() method គឺ instance នៃ Crawler class ដែលផ្ដល់ដោយ DomCrawler component ដែលអនុញ្ញាតអោយចូលទៅបាននិងឆ្លងកាត់នូវ HTML elements ។

គ) ធ្វើការចុចលើតំណភ្ជាប់

Crawler object មានសមត្ថភាពក្នុងការក្លែងធ្វើជាការចុចតំណភ្ជាប់។ ដំបូង pass នូវអត្ថបទនៃ តំណភ្ជាប់ទៅកាន់ selectLink() method ដែលបញ្ជូនមកវិញនូវ Link object។ បន្ទាប់មក pass object មួយនេះទៅកាន់ click() method ដែលដើរតួជាអ្នកត្រូវការនូវការស្នើ HTTP GET ដើម្បីក្លែងនូវការចុចលើតំណភ្ជាប់៖

ឃ) ការ Submit Forms

Crawler object ក៏មានសមត្ថភាពក្នុងការ ជ្រើសទម្រង់ (selecting form)។ ដំបូងអ្នកត្រូវជ្រើសនូវ ប៊ូតុងណាមួយនៃទម្រង់ជាមួយនឹង selectButton() method។ បន្ទាប់មកទៀតប្រើប្រាស់នូវ form() method ដើម្បីរើសនូវ ទម្រង់ដែលប៊ូតុងស្ថិតនៅ។

បន្ទាប់ពីនោះធ្វើការរើសទម្រង់ ហើយបំពេញនូវទិន្នន័យរបស់វា និងផ្ញើរវាចេញដោយប្រើប្រាស់នូវ submit() method ៖

២) Cookies

ក) ការទទួលយកនូវ Cookies

Client ធ្វើការ implement ដែលបញ្ចេញនូវ cookies (ប្រសិនបើ) តាមរយៈ CookieJar ដែលព្រមអោយអ្នកធ្វើការរក្សាទុកនិងទទួលយកនូវ cookie ផ្សេងៗខណៈពេលដែលធ្វើការស្នើជាមួយនឹង client៖

ខ) ធ្វើការ Loop តាមរយៈ Cookies

គ) ការកំណត់នូវ Cookies

អ្នកក៏អាចធ្វើការបង្កើត cookies និងបន្ថែមពួកគេទៅកាន់ cookie jar ដែលអាចចាក់ចូលទៅក្នុង client constructor៖

ឃ) History

Client រក្សាទុកនូវ ការស្នើទាំងអស់របស់អ្នកដែលកំពុងអនុញ្ញាតអោយអ្នកត្រលប់ទៅក្រោយវិញនិងទៅមុខក្នុង history របស់អ្នក៖

អ្នកអាចលុបនូវ history របស់ client ជាមួយនឹង restart() method វានឹងធ្វើការលុប cookies ទាំងអស់៖