Hướng dẫn học : Tạo link thân thiện trong CakePHP

Hướng dẫn học : Tạo link thân thiện trong CakePHP

Trong bài viết này , nội dung chính chủ yếu xoay quanh vấn đề rewrite liên kết trong CakePHP , rewrite ở đây chính là cách làm cho 1 đường link theo mặc định ban đầu trở nên thận thiện hơn và đẹp hơn .

Thông thường ta dùng router hoặc htaccess để rewrite link . Trong bài viết này chủ yếu là Config Router (cấu hình router trong CakePHP)

Ví dụ : Gán link mặc định

Giả sử ta có 1 link như sau http://localost/cakephp/blogs/home

<?php
class BlogsController extends AppController{
    
    function home(){
      ..............
    }
}
Tức là ta đang truy cập :

- Controller : Blogs
- function : home()

Tôi muốn khi truy cập vào http://localost/cakephp thì nó sẽ tự hiểu là http://localost/cakephp/blogs/home thì làm như sau

Trong app/config/routes.php ta thêm

Router::connect('/', array('controller' => 'blogs', 'action' => 'home')); 

Ví dụ : Tạo link thân thiện

Giả sử ta có link http://localhost/cakephp/blog/view/12

<?php

class BlogsController extends AppController{
    
    function view($id=null){
      ..............
    }
}

Tức là ta đa truy cập :

- Controller : Blogs
- function : view()
- Xem bài viết có id = 12

Nhưng tôi muốn khi truy cập vào http://localhost/cakephp/12-Bai-viet-so-muoi-hai.html thì nó vẫn hiểu là http://localhost/cakephp/blog/view/12

- Trong đó (12-Bai-viet-so--muoi-hai) : "12" là ID của bài viết và "Bai-viet-so--muoi-hai" là tiêu đề của bài viết

Ta vào app/config/router.php thêm đoạn mã sau

Router::connect(

        '/:id-:slug.html', 
        array('controller' => 'blogs', 'action' => 'view'),
        array(
            'pass' => array('id', 'slug'),
            "id"=>"[0-9]+", // chỉ là số
        )
    ); 

Trong file view.ctp bạn phải tạo link như trên . Có nhiều cách , các bạn có thể viết bằng mã Html cơ bản hoặc dùng hàm của Cakephp .

Ví dụ tạo link http://localhost/cakephp/12-Bai-viet-so-muoi-hai.html dùng hàm có sẳn của CakePHP

Trong file view.ctp

<?php 

        echo $html->link('Bài viet so muoi hai', 
            array(  
                'controller' => 'blogs',    
                'action' => 'view',    
                'id' => 12,    
                'slug' => Inflector::slug('Bài viet so muoi hai'))); 
    ?>

- Bài viết tham khảo tại : http://book.cakephp.org/view/945/Routes-Configuration

Tags: 
Bạn thấy bài viết này như thế nào?: 
Average: 10 (1 vote)
Ả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

 
Sử dụng Declarative Programming và Drupal 8 như thế nào?

Sử dụng Declarative Programming và Drupal 8 như thế nào?

If you're not already familiar with declarative programming and/or the Drupal 8 configuration API

decouple Drupal in 2018

Một số flowchart về decouple Drupal cập nhật năm 2020

Many people have found the flowchart in that post to be useful in their decision-making on how to approach their Drupal architectures

Phần 1 - Cài đặt, model và CRUD trong Symfony 2

Giải nén → đổi tên thư mục Symfony thành sfdemo, sao chép vào thư mục “/var/www”

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

 

Diet con trung