⊗ppMVDFmCn 28 of 35 menu

Bộ điều khiển trong MVC framework tự tạo bằng PHP

Như bạn đã biết, tất cả các bộ điều khiển của framework chúng ta đều có phương thức render, cần được gọi để gửi dữ liệu đến view. Phương thức này được các bộ điều khiển do người dùng định nghĩa kế thừa từ lớp cha Controller, nằm trong core. Hãy tạo lớp này:

<?php namespace Core; class Controller { protected function render($view, $data) { } } ?>

Như bạn thấy, phương thức render nhận tham số là tên view và dữ liệu để hiển thị. Hãy để phương thức này trả về đối tượng của lớp đặc biệt Page, trong đó sẽ chứa thông tin về view dữ liệu của action controller. Lớp này sẽ chứa tên view, dữ liệu, cũng như tiêu đề trang và tên file layout của trang web:

<?php namespace Core; class Page { private $layout; private $title; private $view; private $data; public function __construct($layout, $title, $view, $data) { $this->layout = $layout; $this->title = $title; $this->view = $view; $this->data = $data; } public function __get($property) { return $this->$property; } } ?>

Khi đó, code của phương thức render của chúng ta sẽ trông như thế này:

<?php namespace Core; class Controller { protected $layout = 'default'; protected function render($view, $data) { return new Page($this->layout, $this->title, $view, $data); } } ?>

Hãy để tôi giải thích điều gì đang xảy ra ở đây. Tên view và dữ liệu được truyền vào qua tham số của phương thức. Tuy nhiên, trong bộ điều khiển do người dùng định nghĩa còn có tiêu đề trang được thiết lập - bằng cách ghi vào thuộc tính title. Điều đó có nghĩa là trong $this->title sẽ chứa tiêu đề mà chúng ta sẽ truyền cho hàm tạo của lớp Page.

Cũng có những điểm cần lưu ý về layout. Như bạn biết, framework của chúng ta sử dụng layout từ file default.php. Trên thực tế, mỗi action có thể có một layout khác. Để làm điều này, cần ghi một tên layout khác vào thuộc tính layout trong chính action đó.

Cách đạt được điều này: bộ điều khiển cha của chúng ta có thuộc tính layout, mặc định có giá trị 'default.php'. Đây sẽ là layout mặc định. Tuy nhiên, nếu action của bộ điều khiển người dùng ghi đè giá trị thuộc tính layout, thì layout sẽ khác.

Sao chép code lớp Controller của tôi và đặt nó vào file /core/Controller.php.

Sao chép code lớp Page của tôi và đặt nó vào file /core/Page.php.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối