Khanh Hoang - Kenn
Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.
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)
Giả sử ta có 1 link như sau http://localost/cakephp/blogs/home
<?php class BlogsController extends AppController{ function home(){ .............. } }
- 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'));
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