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

 

Cydia cập nhật phiên bản 1.1.9 với thiết kế phẳng theo phong cách iOS 7

Nhóm phát triển Cydia mới đây đã phát hành phiên bản 1.1.9 cho ứng dụng của mình với giao diện theo phong cách phẳng của iOS 7.

Tim Cook mới chỉ làm được một vài thay đổi rất nhỏ.

Apple đã thay đổi gì dưới thời Tim Cook?

Theo tờ WSJ, kể từ khi lên làm Giám đốc điều hành Apple vào tháng 8 thay cho “cố nhân” Steve Jobs tới giờ, Tim Cook mới chỉ làm được một vài thay đổi rất nhỏ.

Học Drupal Seo qua 11 khái niệm của www.litado.com

Học Drupal Seo qua 11 khái niệm của www.litado.com

Với gần 400 khái niệm, kỹ thuật, thuật ngữ kinh điển về Seo, Adwords, Analytics, Webmasters Tool, Hosting, Domain....được cập nhập mới nhất cùng với các phần mềm

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

 

Diet con trung