Học lập trình PHP Bộ điều khiển như tên cho biết điều khiển ứng dụng. Nó hoạt động như một cầu nối giữa các mô hình và quan điểm. Bộ điều khiển xử lý dữ liệu yêu cầu, đảm bảo rằng các mô hình chính xác được gọi và phản hồi đúng hoặc chế độ xem được hiển thị.
Các phương thức trong lớp của trình điều khiển được gọi là các hành động . Mỗi bộ điều khiển tuân theo quy ước đặt tên. Tên lớp Controller nằm ở dạng số nhiều, Camel Cased và kết thúc trong Controller - PostsController .
AppController có thể được sử dụng để tải các thành phần sẽ được sử dụng trong mọi bộ điều khiển ứng dụng của bạn. Các thuộc tính và phương thức được tạo trong AppController sẽ có sẵn trong tất cả các trình điều khiển mở rộng nó. Phương thức initialize () sẽ được gọi vào cuối hàm khởi tạo của bộ điều khiển để nạp các thành phần.
Thí dụ
Cú pháp
Đoạn mã sau sẽ chuyển hướng người dùng đến lập chỉ mục hành động của cùng một bộ điều khiển.
Ví dụ sau đây cho thấy cách sử dụng phương thức trên.
config / routes.php
src / Controller / RedirectsController.php
src / Mẫu / Chuyển hướng / action1.ctp
Thực hiện ví dụ trên bằng cách truy cập URL sau.
http: // localhost: 85 / PHP / chuyển hướng điều khiển
Bây giờ, hãy truy cập URL sau - http: // localhost: 85 / PHP / redirect-controller2
URL trên sẽ cung cấp cho bạn kết quả sau.
Cú pháp
Đối số thứ hai là loại kho lưu trữ cần tải.
Thí dụ
Nếu bạn muốn tải mô hình bài viết trong một bộ điều khiển, thì nó có thể được nạp bằng cách viết dòng sau trong hành động của bộ điều khiển.
Các phương thức trong lớp của trình điều khiển được gọi là các hành động . Mỗi bộ điều khiển tuân theo quy ước đặt tên. Tên lớp Controller nằm ở dạng số nhiều, Camel Cased và kết thúc trong Controller - PostsController .
AppController
Lớp AppConttroller là lớp cha của tất cả các trình điều khiển của các ứng dụng. Lớp này mở rộng lớp Controller của PHP. AppController được định nghĩa tại src / Controller / AppController.php . Tệp chứa mã sau.<?php namespace App\Controller; use Cake\Controller\Controller; use Cake\Event\Event; class AppController extends Controller{ public function initialize(){ parent::initialize(); $this->loadComponent('RequestHandler'); $this->loadComponent('Flash'); } public function beforeRender(Event $event){ if (!array_key_exists('_serialize', $this->viewVars) && in_array($this->response->type(), ['application/json', application/xml'])) { $this->set('_serialize', true); } } }
AppController có thể được sử dụng để tải các thành phần sẽ được sử dụng trong mọi bộ điều khiển ứng dụng của bạn. Các thuộc tính và phương thức được tạo trong AppController sẽ có sẵn trong tất cả các trình điều khiển mở rộng nó. Phương thức initialize () sẽ được gọi vào cuối hàm khởi tạo của bộ điều khiển để nạp các thành phần.
Tác vụ điều khiển
Các phương thức trong lớp điều khiển được gọi là Hành động. Hành động có trách nhiệm gửi phản hồi thích hợp cho trình duyệt / người dùng thực hiện yêu cầu. Chế độ xem được hiển thị theo tên hành động, tức là tên của phương thức trong bộ điều khiển.Thí dụ
class RecipesController extends AppController{ public function view($id){ // Action logic goes here. } public function share($customerId, $recipeId){ // Action logic goes here. } public function search($query){ // Action logic goes here. } }Như bạn có thể thấy trong ví dụ trên, RecipesController có 3 hành động - Xem, Chia sẻ và Tìm kiếm .
Chuyển hướng
Để chuyển hướng người dùng đến một hành động khác của cùng một bộ điều khiển, chúng ta có thể sử dụng phương thức setAction (). Sau đây là cú pháp của phương thức setAction () -Cú pháp
Cake\Controller\Controller::setAction($action, $args...)
Đoạn mã sau sẽ chuyển hướng người dùng đến lập chỉ mục hành động của cùng một bộ điều khiển.
$this->setAction('index');
Ví dụ sau đây cho thấy cách sử dụng phương thức trên.
Thí dụ
Thực hiện các thay đổi trong tệp config / routes.php như được hiển thị trong chương trình sau.config / routes.php
<?php use Cake\Core\Plugin; use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('/redirectcontroller',[' controller'=>'Redirects','action'=>'action1']); $routes->connect('/redirectcontroller2',[' controller'=>'Redirects','action'=>'action2']); $routes->fallbacks('DashedRoute'); }); Plugin::routes();Tạo một tệp RedirectsController.php tại src / Controller / RedirectsController.php. Sao chép mã sau trong tệp bộ điều khiển.
src / Controller / RedirectsController.php
<?php namespace App\Controller; use App\Controller\AppController; use Cake\ORM\TableRegistry; use Cake\Datasource\ConnectionManager; class RedirectsController extends AppController{ public function action1(){ } public function action2(){ echo "redirecting from action2"; $this->setAction('action1'); } } ?>Tạo thư mục Chuyển hướng tại src / Template và dưới thư mục đó tạo một tệp Xem có tên action1.ctp . Sao chép mã sau vào tệp đó.
src / Mẫu / Chuyển hướng / action1.ctp
This is an example of how to redirect within controller.
Thực hiện ví dụ trên bằng cách truy cập URL sau.
http: // localhost: 85 / PHP / chuyển hướng điều khiển
Đầu ra
Khi thực hiện, bạn sẽ nhận được kết quả sau.Bây giờ, hãy truy cập URL sau - http: // localhost: 85 / PHP / redirect-controller2
URL trên sẽ cung cấp cho bạn kết quả sau.
Đang tải mô hình
Trong PHP, một mô hình có thể được nạp bằng phương thức loadModel () . Sau đây là cú pháp của phương thức loadModel ().Cú pháp
Cake\Controller\Controller::loadModel(string $modelClass, string $type)
Có hai đối số cho hàm trên
Đối số đầu tiên là tên của lớp mô hình.Đối số thứ hai là loại kho lưu trữ cần tải.
Thí dụ
Nếu bạn muốn tải mô hình bài viết trong một bộ điều khiển, thì nó có thể được nạp bằng cách viết dòng sau trong hành động của bộ điều khiển.
$this->loadModel('Articles');


Không có nhận xét nào:
Đăng nhận xét