Phalcon\Mvc\Dispatcher adalah komponen yang bertanggung jawab untuk instantiating controller dan mengeksekusi tindakan yang diperlukan pada mereka dalam aplikasi MVC. Memahami operasi dan kemampuannya membantu kami mendapatkan lebih banyak dari layanan yang disediakan oleh framework Show Putaran PengirimanIni adalah proses penting yang banyak berkaitan dengan aliran MVC itu sendiri, terutama dengan bagian pengontrol. Pekerjaan terjadi di dalam controller dispatcher. File pengontrol dibaca, dimuat, dan dipakai. Kemudian tindakan yang diperlukan dijalankan. Jika suatu tindakan meneruskan aliran ke pengontrol/tindakan lain, pengirim pengontrol akan memulai lagi. Untuk mengilustrasikan hal ini dengan lebih baik, contoh berikut menunjukkan kira-kira proses yang dilakukan di dalam Phalcon\Mvc\Dispatcher 0. Beberapa peristiwa saat mengembalikan boolean 1 dapat menghentikan operasi aktif. Acara berikut ini didukungNama PeristiwaDipicuDapatkah menghentikan operasi?Dipicu sebelumDispatchLoopDipicu sebelum masuk dalam loop pengiriman. Pada titik ini operator tidak mengetahui apakah pengontrol atau tindakan yang akan dieksekusi ada. Dispatcher hanya mengetahui informasi yang disampaikan oleh Router. YesListenersbeforeDispatchDipicu setelah masuk dalam loop pengiriman. Pada titik ini operator tidak mengetahui apakah pengontrol atau tindakan yang akan dieksekusi ada. Dispatcher hanya mengetahui informasi yang disampaikan oleh Router. YesListenersbeforeExecuteRouteTriggered sebelum menjalankan metode controller/action. Pada titik ini operator telah menginisialisasi pengontrol dan mengetahui apakah ada tindakan. YesListeners/ControllersinitializeAllow untuk menginisialisasi pengontrol secara global di requestNoControllersafterExecuteRouteTriggered setelah menjalankan metode pengontrol/tindakan. Karena operasi tidak dapat dihentikan, hanya gunakan acara ini untuk melakukan pembersihan setelah menjalankan actionNoListeners/ControllersbeforeNotFoundActionTriggered ketika tindakan tidak ditemukan di controllerYesListenersbeforeExceptionTriggered sebelum operator melempar exceptionYesListenersafterDispatchTriggered setelah mengeksekusi metode pengontrol/tindakan. Karena operasi tidak dapat dihentikan, hanya gunakan acara ini untuk melakukan pembersihan setelah mengeksekusi actionYesListenersafterDispatchLoopTriggered setelah keluar dari dispatch loopNoListenersafterBindingTriggered setelah model terikat tetapi sebelum mengeksekusi routeYesListeners/ControllersTutorial INVO menunjukkan cara memanfaatkan pengiriman peristiwa yang mengimplementasikan filter keamanan dengan Acl Contoh berikut menunjukkan cara melampirkan pendengar ke komponen ini
Pengontrol yang dibuat secara otomatis bertindak sebagai pendengar untuk peristiwa pengiriman, sehingga Anda dapat menerapkan metode sebagai panggilan balik 2 tidak sama dengan membuat pengalihan HTTP. Meski ternyata mereka mendapat hasil yang sama. 3 tidak memuat ulang halaman saat ini, semua pengalihan terjadi dalam satu permintaan, sedangkan pengalihan HTTP memerlukan dua permintaan untuk menyelesaikan prosesLebih banyak contoh penerusan
Tindakan _3 menerima parameter berikutParameterDescription5Nama pengontrol yang valid untuk diteruskan. 6Nama tindakan yang valid untuk diteruskan. 7Sebuah array parameter untuk tindakan. 8Nama ruang nama yang valid tempat pengontrol menjadi bagiannyaMenggunakan Pengelola AcaraAnda dapat menggunakan acara _9 untuk mengubah modul dan mengarahkan ulang lebih mudah dan "lebih bersih"
Mempersiapkan parameterBerkat hook point yang disediakan oleh Phalcon\Mvc\Dispatcher, Anda dapat dengan mudah mengadaptasi aplikasi Anda ke skema URL apa pun; . e. Anda mungkin ingin URL Anda terlihat seperti itu. 0. Karena parameter diteruskan dengan urutan yang ditentukan dalam URL ke tindakan, Anda dapat mengubahnya untuk mengadopsi skema yang diinginkan
Jika skema yang diinginkan adalah. 1, kode berikut diperlukan
Mendapatkan ParameterKetika rute menyediakan parameter bernama, Anda dapat menerimanya di pengontrol, tampilan, atau komponen lain apa pun yang memperluas Phalcon\Di\Injectable
Mempersiapkan tindakanAnda juga dapat menentukan skema arbitrer untuk tindakan 2 di loop pengirimanCamelize nama tindakanJika URL aslinya adalah. 3, dan misalnya anda ingin melakukan camelize 4 menjadi 5, diperlukan kode berikut
Hapus ekstensi lawasJika URL asli selalu berisi ekstensi 6 0Anda dapat menghapusnya sebelum mengirimkan kombinasi pengontrol/tindakan 1Menyuntikkan instance modelDalam contoh ini, pengembang ingin memeriksa parameter yang akan diterima suatu tindakan untuk menginjeksi instance model secara dinamis Pengontrolnya terlihat seperti 2Metode _7 menerima turunan dari model 8, pengembang dapat memeriksa ini sebelum mengirimkan tindakan yang mempersiapkan parameter yang sesuai _3Contoh di atas telah disederhanakan. Pengembang dapat meningkatkannya untuk menyuntikkan segala jenis ketergantungan atau model dalam tindakan sebelum dieksekusi Dari 3. 1. x dan seterusnya operator juga dilengkapi dengan opsi untuk menangani ini secara internal untuk semua model yang diteruskan ke aksi pengontrol dengan menggunakan Phalcon\Mvc\Model\Binder _4Karena objek Binder menggunakan Api Refleksi internal yang berat, ada kemampuan untuk menyetel cache. Ini dapat dilakukan dengan menggunakan argumen kedua di dispatcher->forward(
[
'controller' => 'posts',
'action' => 'index',
]
);
}
}
dispatcher->forward(
[
'action' => 'search'
]
);
// Forward flow to another action in the current controller
// passing parameters
$this->dispatcher->forward(
[
'action' => 'search',
'params' => [1, 2, 3]
]
);
|