0

[CakePHP] View : TextHelper

Tiếp tục loạt bài về View trong CakePHP, lần này chúng ta sẽ cùng tìm hiểu về một helper là TextHelper. Với những hàm mà helper này cung cấp, các bạn có thể làm cho những dòng text của mình hữu ích và thân thiện hơn khi hiển thị ra views. Các trường có thể dùng như các đường link, format các đường dẫn URL, hightlight từ khóa nào đó, hoặc làm cho những chuỗi dài được ngắn họn hơn.

1) autoLinkEmails(string $text, array $options=array())

Nếu trong chuỗi text của bạn có chứa địa chỉ email và bạn muốn nó sẽ được tự động thành email link, tức khi click vào đó trình soạn thảo email được khởi động, sẵn sàng cho việc soạn thảo một email mới thì hàm này sẽ có ích cho bạn.

Hàm này nhận vào hai đối số là $text : là chuỗi có chứa địa chỉ email trong nó, $options : là mảng thuộc tính html (nếu bạn quên có thể đọc lại HtmlHelper). Hãy xem ví dụ sau :

$text = 'Nếu bạn cần thêm thông tin về sản phẩm của chúng tôi ' .
        'hãy gửi mail cho chúng tôi tới địa chỉ sau : salesupport@abc.vn';
    $linkedText = $this->Text->autoLinkEmails($myText);
    // Output của bạn sẽ có dạng :
    Nếu bạn cần thêm thông tin về sản phẩm của chúng tôi hãy gửi mail cho chúng tôi tới địa chỉ sau : [salesupport@abc.vn](mailto:salesupport@abc.vn)

Hàm này từ phiên bản 2.1 sẽ tự động escape nội dung text đầu vào. Nếu bạn cảm thấy không cần thiết có thể dùng lựa chọn escape => false để bỏ xử lý này.

2) autoLinkUrls(string $text, array $htmlOptions=array())

Hàm này tương tự như autoLinkEmails() chỉ khác là nó sẽ tìm những chuỗi nào bắt đầu bằng https, http, ftp, hay nntp để tự động tạo link cho các URL.

3) autoLink(string $text, array $htmlOptions=array())

Đây là hàm bao gồm ý nghĩa của cả 2 hàm ở trên, nó tạo được link cho email lẫn cả URL.

4) autoParagraph(string $text)

Trong ứng dụng của bạn chắc hẳn sẽ có những chỗ dùng đến textarea, nội dung nhập vào đó sẽ khá dài và bạn muốn format nó. Lúc này, hàm autoParagraph() sẽ giúp bạn tìm những chỗ xuống dòng rồi tự sinh thẻ
, format các đoạn văn bản bằng cặp thẻ

. Cùng xem ví dụ dưới đây :

    $text = 'Đây là dòng đầu và xuống dòng đến
    dòng thứ hai ở đây.
   dòng thứ ba và cùng là cuối cùng.';
    $formattedText = $this->Text->autoParagraph($myText);
    // Bạn sẽ có được output
    <p>Đây là dòng đầu và xuống dòng đến<br />
    dòng thứ hai ở đây.</p>
    <p>dòng thứ ba và cùng là cuối cùng.</p>
Có một chú ý nhỏ là hàm này được thêm vào từ phiên bản 2.4 nên muốn sử dụng bạn cần lưu ý điều này.

5) highlight(string $haystack, string $needle, array $options = array())

Hàm này sẽ thực hiện highlight chuỗi $needle có trong $haystack và sử dụng mảng $options để chỉ rõ 'format' cho chuỗi đó, đồng thời có thể bỏ qua các thể HTML để chỉ highlight đúng text bạn cần bằng cách set 'html' => true. Bạn hãy xem đoạn code sau :

    echo $this->Text->highlight(
        $textToSearch,
        'highlighted',
        array('format' => '<span class="xxx">\1</span>'
             ,'html' => false)
    );
    // Bạn sẽ nhận được output có dạng
    I will be <span class="xxx">highlighted</span>.

5) truncate(string $text, int $length=100, array $options)

Nếu như $text truyền vào dài hơn giá trị của $length thì hàm này sẽ thực hiện vứt bỏ phần phía sau, thay vào đó là chuỗi tượng trưng cho phần bị giản lược đó, nếu như được khai báo. Mặc định mảng $options có 3 tham số set như sau :

    array(
        'ellipsis' => '...',
        'exact' => true,
        'html' => false
    )

Nếu như 'exact' mà false thì việc vứt bỏ sẽ là từ khoảng trống đầu tiên trước vị trí $lenght, nên chuỗi output có thể không dài bằng $length. Và nếu 'html' là true thì các thẻ HTML sẽ không bị vứt bỏ.

    echo $this->Text->truncate(
        'Phần phía sau sẽ bị vứt bỏ.',
        20,
        array(
            'ellipsis' => '...',
            'exact' => false
        )
    );
    // output (chú ý là tổng độ dài $lenght bao gồm cả phần 'ellipsis')
    Phần phía sau sẽ...
Một chú ý nhỏ là tham số 'ellipsis' thay thế cho 'ending' từ 2.3

6) tail(string $text, int $length=100, array $options)

Hàm tail() cũng được thêm vào từ version 2.3, nó có nghĩa ngược lại với hàm truncate() bên trên, nó sẽ lấy phần phía sau và bỏ đi phần trước đó. Output của hàm này như sau :...đây là phần tail (đuôi), phần trước đã bị lược bỏ.

7) excerpt(string $haystack, string $needle, integer $radius=100, string $ellipsis="...")

Đây có thể coi là sự kết hợp của tail()truncate(), bởi vì nó sẽ trích ra một đoạn chuỗi có trong $haystack xung quanh chuỗi $needle với một lượng kí tự là $radius (lấy cả 2 bên $needle). Cách sử dụng cũng rất đơn giản :

    echo $this->Text->excerpt($myText, 'trích xuất', 11, '...');
    // Output
    ...đã được trích xuất ra rồi,...

8) toList(array $list, $and='and')

Khi bạn đưa vào cho hàm này một mảng $list thì nó sẽ tự tạo cho bạn mỗi list các item có trong mảng đó dạng chuỗi và được phân cách bằng dấu phẩy, và item cuối cùng sẽ được nối bằng $and với item trước đó, mặc định $and mang giá trị 'and'.

    $reports = array(
                  '0' => 'report 1'
                  '1' => 'report 1'
                  '2' => 'ba chấm'
                  '3' => 'report n');
    echo $this->Text->toList($reports, 'và');
    // cho ra output
    report 1, report 1, ba chấm và report n

Đến đây là kết thúc các hàm mà TextHelper cung cấp, hy vọng bài viết có ích với các bạn.

To be continued ...


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí