View Helper
View Helper khá giống với Controller Plugin, nó mở rộng chức năng cho template, bạn có thể gọi các Helper này trong template để thực hiện render các HTML đặc trưng nào đó, hoặc các tác vụ nào đó. Mỗi view helper giống với các widget (menu, navigator ...).
Trong template .phtml $this trỏ đến đối tượng PhpRender, để gọi một helper thường dùng cú pháp: $this->namehelper()
Các Helper hay dùng
Helper | Chi tiết |
---|---|
BasePath |
Lấy địa chỉ theo base path. |
Url |
URL từ route |
ServerUrl |
URL server |
Doctype |
Lấy doctype |
HeadTitle |
Thiết lập Title của trang |
HtmlList |
Sinh mã HTML list : ul/ol |
ViewModel |
Lấy ViewModel |
Layout |
Lấy template layout (template gốc) |
Partial |
Dựng HTML từ một template khác $this->Partial($template) |
InlineScript |
Lấy, thiết lập mã JS cho trang |
Identity |
Lấy định danh User đang truy cập |
FlashMessenger |
Lấy FashMessage |
EscapeHtml |
escape chuỗi ví dụ biến < thành ≶ |
Ví dụ, mở about.phtml
ở ví dụ bài trước, cập nhật lại như sau và chạy thử
<h1>Giới thiệu</h1> <h2>BasePath</h2> <p><?=$this->BasePath()?></p> <p> <?=$this->BasePath('public/css/mycss.css')?> </p> <h2>Url</h2> <p>Home: <?=$this->url('home')?></p> <p>About: <?=$this->url('application', ['action'=>'about'])?></p> <h2>ServerUrl</h2> <p><?=$this->ServerUrl()?></p> <h2>doctype</h2> <?=$this->EscapeHtml($this->doctype()) ?> <h2>HeadTitle</h2> <?=$this->HeadTitle('Tiêu đề trang') ?> <h2>HtmlList</h2> <? $items = [ 'Cấp 1', [ 'Cấp 2', 'Cấp 2', [ 'Cấp 3', 'Cấp 3' ], 'Cấp 2' ], 'Cấp 1' ]; $attribs = array( 'class' => 'foo', ); ?> <h3>UL</h3> <?=$this->HtmlList($items) ?> <h3>OL</h3> <?=$this->HtmlList($items, true, $attribs) ?>
Tạo Helper riêng
Đơn giản bạn tạo ra lớp kế thừa Zend\View\Helper\AbstractHelper
Ví dụ tạo ra lớp Helper có tên MyHelper
//File: module/Application/src/Helper/MyHelper.php
<?php
namespace Application\Helper;
use Zend\View\Helper\AbstractHelper;
class MyHelper extends AbstractHelper
{
public function __invoke($text)
{
return "<quote class='myclass'>$text</quote>";
}
}
Sau khi có lớp Helper \Application\Helper\MyHelper
như trên, đăng ký vào hệ thống, thêm vào module.config.php
với một key mới và nội dung như sau
'view_helpers'=>[ 'invokables' => [ //ngoài ra có factories ... xem controller plugin 'testhelper' => \Application\Helper\MyHelper::class, ], ],
Giờ các template đã có một view helper tên là testhelper
, mở file about.pthml
cập nhật nội dung sau rồi chạy thử kiểm tra
<h1>Giới thiệu</h1> <?=$this->testhelper("THIS IS HELPER"); ?>