Giới thiệu về Url helper trên CodeIgniter

Trong CodeIgniter xử lý, tùy chỉnh và xây dựng Url sẽ trở nên đơn giản nếu bạn sử dụng helper Url . Trong bài này chúng ta sẽ cùng tìm hiểu về Url helper trong CodeIgniter.

Url helper trong CodeIgniter hỗ trợ chúng ta rất nhiều phương thức để xử lý và tùy biến các kiểu url cho hệ thống.

Chúng ta sẽ đi qua từng phương thức này để biết cách sử dụng chúng.

1. Tải Url helper lên hệ thống.

Để sử dụng được Url helper của CodeIgniter, các bạn cần load helper này lên.

$this->load->helper('url');

2. Các phương thức của Url helper.

a. Hàm site_url().

Hàm này trả về Url của site, cái đã được định nghĩa trong file config.php. File index.php (hoặc bất kỳ cái gì mà chúng ta thiết lập như index_page trong config.php) sẽ được chèn vào trong Url này.

Chúng ta nên sử dụng hàm này mọi lúc khi ta cần tạo ra một đường link của hệ thống, nó giúp ta dễ dàng thay đổi các trang của hệ thống khi thiết lập của Url thay đổi.

Các phân đoạn của url có thể truyền vào hàm này theo kiểu chuỗi hoặc mảng. Ví dụ về kiểu chuỗi.

echo site_url("news/local/123");

Ví dụ trên sẽ trả về giá trị giống như sau: http://example.com/index.php/news/local/123

Ví dụ về kiểu mảng.

$segments = array('news', 'local', '123');
echo site_url($segments);

b. Hàm base_url().

Hàm này trả về đường dẫn gốc của hệ thống, cái được định thiết lập ở trong file config.php. Ví dụ.

echo base_url();

Hàm này trả về giá trị giống như hàm site_url(), nhưng không có index_page hay url_suffix đi kèm.

Chúng ta có thể truyền tham số vào hàm này dưới dạng chuỗi hay mảng giống hàm site_url. Ví dụ

echo base_url("blog/post/123");

Ví dụ trên sẽ trả về đường dẫn là : http://example.com/blog/post/123

Hàm này rất hữu dụng khi chúng ta muốn truyền vào một chuỗi dẫn tới file ảnh hoặc file css. Cái mà hàm site_url() không có. Ví dụ.

echo base_url("/_user_guide_src_ci/images/icons/edit.png");

Nó sẽ trả về đường link http://example.com/images/icons/edit.png

c. Hàm uri_string().

Hàm này trả về các phân đoạn trên Url của bất kỳ trang nào chứa hàm này. Ví dụ nếu Url có dạng như sau.

http://some-site.com/blog/comments/123

Hàm sẽ trả về là 

/blog/comments/123

d. Hàm index_page().

Trả về trang index được định nghĩa trong file config.php. Ví dụ

echo index_page();

e. Hàm anchor().

Hàm này giúp tạo ra một đường dẫn neo HTML dựa trên Url gốc của hệ thống. Ví dụ như

<a href="http://example.com">Click Here</a>

Hàm này có 3 tham số tùy chọn.

anchor(uri segments, text, attributes)

Tham số đầu tiên chứa các phân đoạn mà chúng ta muốn xuất hiện trên Url. Giống ở hàm site_url() phía trên, các phân đoạn này có thể là một chuỗi hay là một mảng tùy ý.

Chú ý : Nếu ta chỉ muốn tạo một đường link của site (không link ra bên ngoài) thì ta sẽ không truyền cả đường link vào (dạng như http://thuthuatvietnam.com.local/home/...). 

Chúng sẽ được tự động chèn vào với các thông tin chúng ta đã thiết lập trong file config.php. Chúng ta chỉ truyền vào các phân đoạn mà chúng ta muốn.

Tham số thứ hai là nhãn của đường link đó (chuỗi được tạo giữa hai thẻ và <a></a>). Nếu để trống thì Url sẽ được thay thế vào đó.

Tham số thứ ba có thể chứa một mảng các tham số ví dụ như title, id, class..Ví dụ

echo anchor('news/local/123', 'My News', 'title="News title"');

Sẽ tạo ra : <a href="http://example.com/index.php/news/local/123" title="News title">My News</a>

echo anchor('news/local/123', 'My News', array('title' => 'The best news!'));

Sẽ tạo ra : <a href="http://example.com/index.php/news/local/123" title="The best news!">My News</a>

f. anchor_popup().

Hàm này gần giống với hàm anchor() trừ một cái là nó sinh ra url trên một cửa sổ trình duyệt mới. Ta có thể tạo một tham số thứ 3 là dạng cửa sổ Javascript truyền vào để điều khiển cách hiển thị của nó. Nếu tham số thứ 3 không được thiết lập thì nó sẽ mở một cửa sổ mới với tham số mặc định của trình duyệt. Ví dụ

$atts = array(
'width'  =>  '800',
'height' => '600',
'scrollbars' => 'yes',
'status' => 'yes',
'resizable' => 'yes',
'screenx' =>'0',
screeny' => '0'
);
echo anchor_popup('news/local/123', 'Click Me!', $atts);

Chú ý: Các thuộc tính ở trên là giá trị mặc định do đó ta chỉ cần thiết lập một trong số cái mà ta cần thay đổi. Nếu muốn nó sử dụng tất cả là mặc định thì ta chỉ cần truyền vào một mảng trắng.

echo anchor_popup('news/local/123', 'Click Me!', array());

g. Hàm mailto().

Hàm này giúp tạo ra một đường dẫn email. Ví dụ

echo mailto('me@my-site.com', 'Click Here to Contact Me');

h. Hàm safe_mailto().

Hàm này giống hệt hàm mailto() chỉ khác là nó ghi ra một thẻ mailto phức tạp sử dụng các con số theo thứ tự được viết bằng Javascript nhằm bảo vệ địa email khỏi các spam email.

Chúng ta nên dùng hàm này khi muốn thiết lập một đường link email.

i. Hàm auto_link().

Hàm này tự động chuyển dổi các đường dẫn Url và địa chỉ email trong một chuỗi thành đường link. Ví dụ

$string = auto_link($string);

Tham số thứ hai của hàm xác định xem kiểu được chuyển đổi về là gì (email, url, hay cả hai). Mặc định là cả hai. Đường link email sẽ được mã hóa giống như hàm safe_mailto() ở trên.

Ví dụ về chuyển đổi Url.

$string = auto_link($string, 'url');

Ví dụ về chuyển đổi Email.

$string = auto_link($string, 'email');

Tham số thứ 3 xác định xem đường link có được hiển thị trên cửa sổ mới hay không. Ví dụ

$string = auto_link($string, 'both', TRUE);

j. Hàm url_title().

Hàm này lấy một chuỗi làm đầu vào và tạo ra một đường dẫn Url. Hàm này rất hữu dụng nếu ta có một blog mà muốn sử dụng title là một phần trên Url. Ví dụ

$title = "What's wrong with CSS?";
$url_title = url_title($title);
// Tạo ra: Whats-wrong-with-CSS

Tham số thứ 2 xác định ký tự phân cách. Mặc định là dấu gạch ngang "-".

$title = "What's wrong with CSS?";
$url_title = url_title($title, '_');
// Tạo ra: Whats_wrong_with_CSS

Tham số thứ 3 xác định xem có chuyển các ký tự thành chữ thường hay không. Mặc định là không chuyển.

$title = "What's wrong with CSS?";
$url_title = url_title($title, '_', TRUE);
// Tạo ra: whats_wrong_with_css

k. Hàm prep_url().

Hàm này sẽ chèn http:// vào một đường dẫn Url bị thiếu phương thức này. Ví dụ

$url = "example.com";
$url = prep_url($url);

l. Hàm redirect().

Hàm này sẽ dựng lên một đường dẫn Url dựa trên các cấu hình trong file config.php đã được định nghĩa. Nó giúp chúng ta chuyển hướng đến bất kỳ method nào trên hệ thống mà ta muốn.

Ví dụ.

if ($logged_in == FALSE)
{
redirect('/login/form/', 'refresh');
// Chuyển hướng tới class login, function form với phương thức refresh
}
// with 301 redirect
redirect('/article/13', 'location', 301);
// Chuyển hướng tới class hiện tại, function article có id=13 với phương thức location

Tham số thứ 2 cho phép ta chọn giữa phương thức 'refresh' hoặc 'location'(mặc định). Phương thức location nhanh hơn phương thức refresh, nhưng trên server Windows thường có lỗi xảy ra.

Tham số thứ 3 cho phép ta gửi một Mã HTTP trả lời. Giá trị Mã trả lời mặc định là 302. Tham số thứ 3 chỉ có duy nhất với phương thức location, không có trên refresh.

Chúc các bạn thành công :)

Tags: