Thứ Sáu, 28 tháng 9, 2018

CakePHP - Xem phần tử

Học lập trình PHP. Một số phần của trang web được lặp lại trên nhiều trang web nhưng tại các vị trí khác nhau. PHP có thể giúp chúng tôi tái sử dụng các phần lặp lại này.

Các bộ phận tái sử dụng này được gọi là Elements - hộp trợ giúp, menu phụ vv Một phần tử về cơ bản là một mini-view . Chúng ta cũng có thể truyền các biến trong các phần tử.

Cake\View\View::element(string $elementPath, array $data, array $options =[])

Có ba đối số cho hàm trên

Đối số đầu tiên là tên của tệp khuôn mẫu trong thư mục / src / Template / Element / .

Đối số thứ hai là mảng dữ liệu được cung cấp cho chế độ xem được hiển thị.

Đối số thứ ba là cho mảng các tùy chọn. ví dụ: bộ nhớ cache.

Trong số 3 đối số, phần đầu tiên là bắt buộc trong khi phần còn lại là tùy chọn.

Thí dụ

Tạo một tệp phần tử tại thư mục src / Template / Element có tên là helloworld.ctp . Sao chép mã sau vào tệp đó.

src / Mẫu / Yếu tố / helloworld.ctp

<p>Hello World</p>

Tạo một thư mục Elems tại src / Template và dưới thư mục đó tạo một tập tin View được gọi là index.ctp . Sao chép mã sau vào tệp đó.

src / Mẫu / Elems / index.ctp

Element Example: <?php echo $this→element('helloworld'); ?>

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('/elementexample',['controller'=>'Elems','action'=>'index']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();

Tạo một tập tin ElemsController.php tại src / Controller / ElemsController.php . Sao chép mã sau trong tệp bộ điều khiển.

src / Controller / ElemsController.php
<?php
   namespace App\Controller;
   use App\Controller\AppController; 
   use Cake\ORM\TableRegistry;
   use Cake\Datasource\ConnectionManager;

   class ElemsController extends AppController{
      public function index(){
      }
   }
?>

Thực hiện ví dụ trên bằng cách truy cập URL sau.

http: // localhost: 85 / PHP / phần tử-ví dụ

Đầu ra

Khi thực hiện, URL trên sẽ cung cấp cho bạn kết quả sau.

Học lập trình PHP
Học lập trình PHP

Thứ Năm, 27 tháng 9, 2018

CakePHP - Mở rộng chế độ xem

Học lập trình PHP. Nhiều lần, khi tạo trang web, chúng tôi muốn lặp lại một số phần nhất định của các trang trong các trang khác. PHP có cơ sở như vậy mà một người có thể mở rộng khung nhìn trong một khung nhìn khác và cho điều này, chúng ta không cần lặp lại mã lần nữa. 

Phương thức extend () được sử dụng để mở rộng các khung nhìn trong tệp Xem . Phương thức này lấy một đối số, tức là tên của tệp xem với đường dẫn. Không sử dụng phần mở rộng .ctp trong khi cung cấp tên của tệp Xem.

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('extend',['controller'=>'Extends','action'=>'index']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();
Tạo một tệp ExtendsController.php tại src / Controller / ExtendsController.php . Sao chép mã sau trong tệp bộ điều khiển.

src / Controller / ExtendsController.php
<?php
   namespace App\Controller;
   use App\Controller\AppController;

   class ExtendsController extends AppController{
      public function index(){
      }
   }
?>
Tạo một thư mục Mở rộng tại src / Template và dưới thư mục đó tạo một tệp Xem có tên là header.ctp . Sao chép mã sau vào tệp đó.

src / Mẫu / Mở rộng / header.ctp
<div align = "center"><h1>Common Header</h1></div>

<?= $this->fetch('content') ?>
Tạo một dạng xem khác trong thư mục Mở rộng có tên là index.ctp . Sao chép mã sau vào tệp đó. Ở đây chúng tôi đang mở rộng header.ctp xem ở trên .

src / Mẫu / Mở rộng / index.ctp

<?php $this->extend('header'); ?>
This is an example of extending view.

Thực hiện ví dụ trên bằng cách truy cập URL sau.

http: // localhost: 85 / PHP / mở rộng

Đầu ra

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Học lập trình PHP
Học lập trình PHP



Thứ Năm, 20 tháng 9, 2018

CakePHP - Lượt xem

Học lập trình PHP Chữ “V” trong MVC dành cho Chế độ xem. Lượt xem có trách nhiệm gửi đầu ra cho người dùng dựa trên yêu cầu. Xem Lớp học là một cách mạnh mẽ để tăng tốc quá trình phát triển.

Xem mẫu

Tệp Xem mẫu của PHP có tiện ích mở rộng mặc định. ctp (Mẫu PHP). Các mẫu này lấy dữ liệu từ bộ điều khiển và sau đó hiển thị đầu ra sao cho nó có thể được hiển thị đúng cho người dùng. Chúng ta có thể sử dụng các biến, các cấu trúc điều khiển khác nhau trong khuôn mẫu.

Các tệp mẫu được lưu trữ trong src / Template / , trong một thư mục có tên sau khi bộ điều khiển sử dụng các tệp và được đặt tên theo hành động tương ứng với nó. Ví dụ: tệp Xem cho hành động “view ()” của bộ điều khiển Sản phẩm , thường được tìm thấy trong src / Template / Products / view.ctp.

Trong ngắn hạn, tên của controller (ProductsController) giống như tên của thư mục (Products) nhưng không có Controller từ và tên action / method (view ()) của controller (ProductsController) giống như tên của tệp Xem (view.ctp).

Xem biến

Xem biến là các biến có giá trị từ bộ điều khiển. Chúng tôi có thể sử dụng nhiều biến trong mẫu xem như chúng tôi muốn. Chúng ta có thể sử dụng phương thức set () để truyền các giá trị cho các biến trong các khung nhìn. Các biến được đặt này sẽ có sẵn trong cả chế độ xem và bố cục mà hành động của bạn hiển thị. Sau đây là cú pháp của phương thức set () .

Cú pháp

Cake\View\View::set(string $var, mixed $value)

Phương thức này lấy hai đối số - tên của biến và giá trị của 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('template',['controller'=>'Products','action'=>'view']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();
Tạo tệp ProductsController.php tại src / Controller / ProductsController.php . Sao chép mã sau trong tệp bộ điều khiển.

src / Controller / ProductsController.php
<?php
   namespace App\Controller;
   use App\Controller\AppController;
   
   class ProductsController extends AppController{
      public function view(){
         $this->set('Product_Name','XYZ');
      }
   }
?>
Tạo thư mục Sản phẩm tại src / Mẫu và trong thư mục đó tạo tệp Xem cótên là view.ctp. Sao chép mã sau vào tệp đó.

src / Mẫu / Sản phẩm / view.ctp

Value of variable is: <?php echo $Product_Name; ?>

Thực hiện ví dụ trên bằng cách truy cập URL sau.

http: // localhost: 85 / PHP / mẫu

Đầu ra

URL trên sẽ tạo ra kết quả sau.

Học lập trình PHP
Học lập trình PHP

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');

Thứ Tư, 12 tháng 9, 2018

CakePHP - Định tuyến chuyển hướng

Định tuyến chuyển hướng hữu ích khi chúng tôi muốn thông báo cho ứng dụng lập trình PHP khách rằng URL này đã được di chuyển. URL có thể được chuyển hướng bằng cách sử dụng chức năng sau.
static Cake\Routing\Router::redirect($route, $url, $options =[])

Có ba đối số cho hàm trên

Một chuỗi mô tả mẫu của tuyến đường.

URL để chuyển hướng đến.

Một mảng khớp với các phần tử được đặt tên trong tuyến đường với các biểu thức chính quy mà thành phần đó phải khớp.

Thí dụ

Thực hiện các thay đổi trong tệp config / routes.php như hình dưới đây. Ở đây, chúng tôi đã sử dụng bộ điều khiển đã được tạo trước đó.

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('/generate2', ['controller' => 'Tests', 'action' => 'index']);
      $routes->redirect('/generate1','http://tutorialspoint.com/');
      $routes->connect('/generate_url',['controller'=>'Generates','action'=>'index']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();
Thực hiện ví dụ trên bằng cách truy cập các URL sau.

URL 1 - http: // localhost: 85 / PHP / generate_url

URL 2 - http: // localhost: 85 / PHP / generate1

URL 3 - http: // localhost: 85 / PHP / generate2

Đầu ra cho URL 1

Học lập trình PHP
Học lập trình PHP

Đầu ra cho URL 2

Bạn sẽ được chuyển hướng đến PHP

Đầu ra cho URL 3

Học lập trình PHP
Học lập trình PHP

Thứ Hai, 10 tháng 9, 2018

CakePHP - Tạo URL

Đây là một tính năng thú vị của Lập trình PHP. Sử dụng các URL được tạo, chúng tôi có thể dễ dàng thay đổi cấu trúc của URL trong ứng dụng mà không cần sửa đổi toàn bộ mã.

url( string|array|null $url null , boolean $full false )

Hàm trên sẽ lấy hai đối số

Đối số đầu tiên là một mảng chỉ định bất kỳ điều nào sau đây - 'bộ điều khiển', 'hành động', 'plugin' . Ngoài ra, bạn có thể cung cấp các yếu tố được định tuyến hoặc tham số chuỗi truy vấn. Nếu chuỗi, nó có thể được đặt tên của bất kỳ chuỗi url hợp lệ nào.

Nếu đúng, URL cơ sở đầy đủ sẽ được thêm vào kết quả. Mặc định là sai.

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('/generate',['controller'=>'Generates','action'=>'index']);
   });

   Plugin::routes();
Tạo một tệp GeneratesController.php tại src / Controller / GeneratesController.php . Sao chép mã sau trong tệp bộ điều khiển.

src / Controller / GeneratesController.php
<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\ORM\TableRegistry;
   use Cake\Datasource\ConnectionManager;

   class GeneratesController extends AppController{
      public function index(){
      }
   }
?>
Tạo một thư mục Tạo ra tại src / Template và dưới thư mục đó tạo ra một tập tin View được gọi là index.ctp . Sao chép mã sau vào tệp đó.

src / Mẫu / Tạo / index.ctp

This is CakePHP tutorial and this is an example of Generating URLs.
Thực hiện ví dụ trên bằng cách truy cập URL sau

http: // localhost: 85 / PHP / tạo

URL trên sẽ tạo ra kết quả sau

Học lập trình PHP
Học lập trình PHP

Thứ Tư, 5 tháng 9, 2018

CakePHP - Định tuyến

Học lập trình PHP định tuyến ánh xạ URL của bạn đến hành động của bộ điều khiển cụ thể. Trong phần này, chúng ta sẽ thấy cách bạn có thể triển khai các tuyến đường, cách bạn có thể chuyển đối số từ URL sang hành động của bộ điều khiển, cách bạn có thể tạo URL và cách bạn có thể chuyển hướng đến một URL cụ thể.

Thông thường, các tuyến được thực hiện trong tệp config / routes.php . Định tuyến có thể được thực hiện theo hai cách

phương pháp tĩnh

người xây dựng tuyến đường rải rác

Đây là một ví dụ trình bày cả hai loại.

// Using the scoped route builder.
Router::scope('/', function ($routes) {
   $routes->connect('/', ['controller' => 'Articles', 'action' => 'index']);
});

// Using the static method.
Router::connect('/', ['controller' => 'Articles', 'action' => 'index']);

Cả hai phương thức sẽ thực thi phương thức index của ArticlesController . Trong số hai phương pháp xây dựng tuyến đường có phạm vi cho hiệu suất tốt hơn.

Kết nối tuyến đường

Router :: connect () phương pháp được sử dụng để kết nối các tuyến đường. Sau đây là cú pháp của phương thức

static Cake\Routing\Router::connect($route, $defaults =[], $options =[])

Có ba đối số cho phương thức Router :: connect ()

Đối số đầu tiên là cho mẫu URL bạn muốn khớp.

Đối số thứ hai chứa các giá trị mặc định cho các phần tử tuyến đường của bạn.

Đối số thứ ba chứa các tùy chọn cho tuyến đường thường chứa các quy tắc biểu thức chính quy.

Đây là định dạng cơ bản của tuyến đường

$routes->connect(
   'URL template',
   ['default' => 'defaultValue'],
   ['option' => 'matchingRegex']
);

Thí dụ

Thực hiện các thay đổi trong tệp config / routes.php như hình dưới đây.

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('/', ['controller' => 'Tests', 'action' => 'index']);
      $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();
Tạo một tệp TestsController.php tại src / Controller / TestsController.php . Sao chép mã sau trong tệp bộ điều khiển.

src / Controller / TestsController.php
<?php
   namespace App\Controller;
   use App\Controller\AppController;

   class TestsController extends AppController{
      public function index(){
      }
   }
?>
Tạo thư mục Thử nghiệm dưới src / Mẫu và dưới thư mục đó tạo tệp Xem có tên index.ctp . Sao chép mã sau vào tệp đó.

src / Mẫu / Bài kiểm tra / index.ctp

This is CakePHP tutorial and this is an example of connecting routes.

Thực hiện ví dụ trên bằng cách truy cập URL sau.

http: // localhost: 85 / PHP /

URL trên sẽ mang lại kết quả sau.

Học lập trình PHP

Đối số đã vượt qua


Đối số được truyền là các đối số được chuyển trong URL. Các đối số này có thể được chuyển đến hành động của bộ điều khiển. Các đối số đã truyền này được trao cho bộ điều khiển của bạn theo ba cách.

Làm đối số cho phương thức hành động

Ví dụ sau đây cho thấy cách chúng ta có thể truyền đối số cho hành động của bộ điều khiển.

Truy cập URL sau - http: // localhost: 85 /PHP / tests / value1 / value2

Điều này sẽ khớp với tuyến đường sau.

$routes->connect('tests/:arg1/:arg2', ['controller' => 'Tests', 'action' =>
   'index'],['pass' => ['arg1', 'arg2']]);

Ở đây giá trị 1 từ URL sẽ được gán cho arg1 và value2 sẽ được gán cho arg2.

Như mảng được lập chỉ mục số

Khi đối số được truyền cho hành động của bộ điều khiển, bạn có thể nhận được đối số với câu lệnh sau.
$args = $this->request->params[‘pass’]
Các đối số được truyền cho hành động của bộ điều khiển sẽ được lưu trữ trong biến $ args .

Sử dụng mảng định tuyến

Đối số cũng có thể được chuyển đến hành động bằng câu lệnh sau

$routes->connect('/', ['controller' => 'Tests', 'action' => 'index',5,6]);

Câu lệnh trên sẽ chuyển hai đối số 5 và 6 đến phương thức index () của TestController .

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('tests/:arg1/:arg2', ['controller' => 'Tests', 'action'=> 
         'index'],['pass' =>['arg1', 'arg2']]);
      
      $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);
      $routes->fallbacks('DashedRoute');
   });

   Plugin::routes();
Tạo một tệp TestsController.php tại src / Controller / TestsController.php . Sao chép mã sau trong tệp bộ điều khiển.

src / Controller / TestsController.php
<?php
   namespace App\Controller;
   use App\Controller\AppController;

   class TestsController extends AppController{
      public function index($arg1,$arg2){
         $this->set('argument1',$arg1);
         $this->set('argument2',$arg2);
      }
   }
?>
Tạo một thư mục Các thử nghiệm tại src / Template và dưới thư mục đó tạo một tệp Xem có tên là index.ctp . Sao chép mã sau vào tệp đó.

src / Mẫu / Bài kiểm tra / index.ctp

This is CakePHP tutorial and this is an example of Passed arguments.<br />
Argument-1: <?=$argument1?><br />
Argument-2: <?=$argument2?><br />
Thực hiện ví dụ trên bằng cách truy cập URL sau.

http: // localhost: 85 / PHP / kiểm tra / Virat / Kunal

Khi thực hiện, URL trên sẽ tạo ra kết quả sau.

Học lập trình PHP
Học lập trình PHP

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...