Thứ Hai, 17 tháng 9, 2018

CakePHP - Bộ điều khiển

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

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

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...