Helpers, như cái tên gọi, chúng sẽ giúp bạn làm các
tác vụ. Mỗi tập tin helper đơn giản là 01 bộ sưu tập các hàm trong 01 mục
chuyên biệt.
Ta có các URL Helpers, dùng hỗ trợ trong
việc tạo liên kết,
Ta có các Form Helpers dùng hỗ trợ trong việc tạo
các phần tử biểu mẫu ,
Ta có các Text Helpers dùng thao tác định
dạng văn bản thông dụng ,
Ta có các Cookie Helpers dùng thiết lập và
đọc các cookies,
Ta có các File
Helpers dùng xử lý tập tin và …
Không giống như hầu hết các hệ thống khác trong CodeIgniter, Helpers không được viết theo kiểu Hướng Đối Tượng. Chúng đơn giản, là những hàm hướng thủ tục. Mỗi hàm helper thực thi 01 nhiệm vụ chuyên biệt, và độc lập với các hàm khác.
Không giống như hầu hết các hệ thống khác trong CodeIgniter, Helpers không được viết theo kiểu Hướng Đối Tượng. Chúng đơn giản, là những hàm hướng thủ tục. Mỗi hàm helper thực thi 01 nhiệm vụ chuyên biệt, và độc lập với các hàm khác.
CodeIgniter không tải mặc định các hàm Helper, vì
vậy bước đầu tiên trong việc dùng Helper là phải tải nó. Một khi đã tải rồi, nó
có tính toàn cục trong controller và các views của bạn.
Helpers thường được lưu trong thư mục system/helpers,
hoặc application/helpers. CodeIgniter sẽ tìm trong thư mục application/helpers
trước. Nếu thư mục không tồn
tại hoặc hàm helper cần tìm không có ở đó CI sẽ tìm trong thư mục system/helpers/
Tải 01 tập tin helper hoàn toàn đơn giản bằng cách
dùng phương thức sau:
$this->load->helper('tên_hàm');
Tên_hàm ở đây là tên tập tin chứa hàm helper mà
không có phần đuôi .php cũng như chữ
“helper”.
Ví dụ, để tải tập tin URL Helper, có tên đầy
đủ là url_helper.php, bạn dùng câu lệnh như sau:
$this->load->helper('url');
01 helper có thể được tải ở bất kỳ đâu bên trong
các phương thức controller của bạn (hoặc ngay cả trong các tập tin View, dù cho
như vậy là không cần thiết), bạn tải nó trước khi bạn dùng nó. Bạn có thể tải
các helpers của bạn trong phần khởi tạo của controller vì thế cho nên chúng tự
động được sẵn sàng để dùng trong bất kỳ hàm nào, hoặc bạn có thể tải 01 helper trong
01 hàm riêng biệt khi bạn cần xài nó.
Ghi chú:
Phương thức tải Helper đề cập ở trên không trả về
giá trị nào, vì thế đừng gán nó vào biến nào. Chỉ cần dùng nó như vậy là được.
Nếu bạn cần tải nhiều hơn 01 helper bạn có thể xác
định chúng trong 01 mảng như vầy:
$this->load->helper(array('helper1',
'helper2', 'helper3'));
Nếu nhận thấy rằng bạn cần 01 helper nào đó có tính
toàn cục trong cả ứng dụng, bạn có thể bảo CodeIgniter tự động tải nó trong
suốt quá trình khởi tạo của hệ thống. Để làm điều này các bạn vào tập tin application/config/autoload.php
và thêm helper mong muốn vào mảng $autoload['helper'] = array();
Một khi đã tải tập tin Helper có chứa hàm mà bạn
định dùng, bạn sẽ gọi nó giống như 01 hàm thông dụng của PHP.
Ví dụ để tạo 01 liên kết bằng cách dùng hàm anchor() trong các tập tin view của bạn, ta viết như sau:
Ví dụ để tạo 01 liên kết bằng cách dùng hàm anchor() trong các tập tin view của bạn, ta viết như sau:
<?php
echo anchor('blog/comments',
'Bấm vào đây');?>
Ngay chỗ “Bấm vào đây” chính là tên của liên kết, và
“blog/comments” là URI trỏ đến controller/phương_thức bạn muốn liên kết đến.
Để “mở rộng” Helpers, ta tạo 01 tập tin trong thư
mục application/helpers/ với 01 cái tên trùng với 01 Helper đã có, nhưng
có phần chữ MY_ đằng trước (phần chữ này có thể sửa lại được. Xem phần
dưới)
Nếu tất cả điều bạn cần làm là thêm chức năng nào
đó vào 01 helper đã có – có lẽ thêm 01 hàm hoặc 02, hoặc thay đổi cách hoạt
động của 01 hàm helper nào đó – sau đó ta có thể thay thế cả helper đó bằng
phiên bản mới tạo. Trong trường hợp này tốt nhất là dùng chữ “mở rộng” Helper.
Ghi chú:
Chữ “mở rộng” được dùng ở đây vì các hàm Helper có
tính hướng thủ tục và rời rạc, không phải là chữ extends-thừa kế như trong ngôn
ngữ lập trình truyền thống. Hàm ý ở đây là CI cho phép bạn khả năng thêm vào
hoặc thay thế các hàm sẵn có do 01 Helper cung cấp.
Ví dụ để mở rộng Array Helper bạn sẽ tạo 01
tập tin có tên application/helpers/MY_array_helper.php, và thêm hoặc
viết đè lên các hàm đã có sẵn:
//
any_in_array() là hàm không có sẵn trong Array Helper, vì thế đó là 01 hàm mới
function
any_in_array($needle,
$haystack)
{
$needle
= is_array($needle)
? $needle : array($needle);
foreach ($needle
as $item)
{
if (in_array($item,
$haystack))
{
return TRUE;
}
}
return FALSE;
}
//
random_element() là hàm có sẵn trong Array Helper, vì thế ở đây là viết đè lên
hàm cũ
function
random_element($array)
{
shuffle($array);
return array_pop($array);
}
Phần chữ thêm vào ở đầu (prefix) trong tên các
helpers “mở rộng” được dùng tương tự để mở rộng thư viện và các lớp trong phần
lõi của CI. Để thiết lập phần prefix, các bạn mở tập tin application/config/config.php
và tìm giá trị này:
$config['subclass_prefix']
= 'MY_';
Các
bạn làm ơn chú ý rằng tất cả các thư viện CodeIgniter bắt đầu bằng chữ CI_
vì thế đừng dùng chữ này cho phần prefix của bạn.
Các bạn có thể xem toàn bộ danh sách các hàm
Helpers có sẵn của CodeIgniter tại đây:
user_guide/helpers/
Nếu vẫn chưa rõ các bạn xem thêm video clip sau:
By #tiensim
Nguồn: User Guide – General Topics
Không có nhận xét nào:
Đăng nhận xét