Giới thiệu Tree Routing trong Zend Framework 2 - part 2

Giới thiệu Tree Routing trong Zend Framework 2 - part 2

Cải tiến hơn so với version 1, ZF2 không chỉ dừng lại ở mức routing cho từng path URI cụ thể. Đến với ZF2, chúng ta sẽ làm quen với khái niệm Tree Routing - hay có thể nói là làm sao kết nối các routing lại với nhau để tạo hiệu ứng tốt hơn cho việc làm đẹp url.

Ngoài ra, với tree routing còn giúp cải thiện tốc độ load web nhanh hơn. Nhưng đây cũng là một khái niệm khá mới nên có vẻ cũng hơi khó làm quen với nó. Mình cũng chỉ mới tập tành làm quen với dạng routing này.

1 - Cơ chế hoạt động

Một router bất kỳ có thể chứ nhiều (vô hạn) những router con của nó. Tuy nhiên, router con chỉ được kích hoạt khi router cha được khớp với URI. Một router con có thể là bất kỳ dạng routing nào đã được liệt kê ở phần 1.

Đối với ZF2, không có cơ chế mặc định cho việc routing, nên những route con chỉ có thể kích hoạt khi route cha có cài đặt khai báo "tao có con - nhớ tìm con tao".

2 - Kết nối nhiều route - tree routing

Trong khai báo route, chúng ta thêm phần chỉ định có route con như bên dưới để xác lập tree routing

array(
  'articles' => array(
    'type' => 'literal',
    'options' => array(
      'route' => '/articles', 'defaults' => array(
        'controller' => 'Application\Controller\Article',
        'action' => 'index'
      )
    ),
    'may_terminate' => true,
    'child_routes' => array(
      'details' => array(
        'type' => 'segment', 'route' => '/:id',
        'constraints' => array('articles' => '\d+'),
        'defaults' => array('action' => 'details')
      )
    )
  )
)

3 - Sử dụng WildCard để giống ZF1

Nếu bạn từng là 1 tín đồ của ZF1, thì việc route mặc định của ZF1 có phần tự động hiểu các tham số phát sinh thêm do người tự nhập vào. Chúng ta cũng có thể tái thiết lập định dạng này ở ZF2 như sau:

array(
  'type' => 'segment',
  'options' => array(
    'route' => '/application[/:controller][/:action][/:id]',
    'constraints' => array(
      'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
      'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
      'id' => '[0-9]+',
    ),
    'defaults' => array(
      '__NAMESPACE__' => 'Application\Controller',
      'controller' => 'Index',
      'action' => 'index',
    ),
  ),
  'may_terminate' => true,
  'child_routes' => array(
    'default' => array(
      'type' => 'Wildcard',
      'options' => array(
      ),
    ),
  ),
)

4 - Nhận tham số khớp route

Đối với ZF1, việc nhận tham số request rất đơn giản bằng phương thức sau ở tầng controller:
$this->_request->getParam('key', 'default-value'); hoặc
$this->_request->getParams();

Nhưng đối với ZF2, thì chúng ta nhận tham số khớp route bằng phương thức sau ở tầng controller:
$this->getEvent()->getRouteMatch()->getParam('key', 'default-value'); hoặc
$this->getEvent()->getRouteMatch()->getParams();

Theo Minh Quang Trần 

Link gốc: http://tmquang6805.blogspot.com/2013/03/zend-framework-2-routing-part-2.html

Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Lễ ký kết cùng đồng hành giữa MGID - Haravan - Asia Mar Tech Group

Lễ ký kết cùng đồng hành giữa MGID - Haravan - Asia Mar Tech Group

Ngày 8.9.2019, đã diễn ra lễ ký kết cùng đồng hành giữa MGID - Haravan - Asia Mar Tech Group tại MPLEX Studio & Theatre, 62 Trần Quang Khải, Phường Tân Định, Quận 1, TP.HCM

Dịch vụ quét mã độc WordPress miễn phí

Dịch vụ quét mã độc cho mã nguồn WordPress miễn phí năm 2020

Dịch vụ quét mã độc WordPress miễn phí dành cho khách hàng mua WordPress Hosting.

Luật Steve Jobs - Vì sao nhà sáng lập lại chính là nhà lãnh đạo tốt nhất?

Luật Steve Jobs - Vì sao nhà sáng lập lại chính là nhà lãnh đạo tốt nhất?

Vị CEO quá cố của Apple rất đặc biệt, nhưng một bài học ta rút ra từ quá khứ của ông ấy thì còn có ảnh hưởng hơn nhiều, đến mức có thể gọi thành “luật” (bất thành văn, đương nhiên).

Công ty diệt chuột T&C

 

Diet con trung