Yii - Định dạng
Để hiển thị dữ liệu ở định dạng có thể đọc được, bạn có thể sử dụng formatter thành phần ứng dụng.
Step1 - Thêm actionFormatter phương pháp cho SiteController.
public function actionFormatter(){
return $this->render('formatter');
}
Trong đoạn mã trên, chúng tôi chỉ hiển thị formatter lượt xem.
Step 2 - Bây giờ, tạo một formatter.php xem tệp bên trong views/site folder.
<?php
$formatter = \Yii::$app->formatter; // output: January 1, 2016 echo $formatter->asDate('2016-01-01', 'long'),"<br>";
// output: 51.50%
echo $formatter->asPercent(0.515, 2),"<br>"; // output: <a href = "mailto:[email protected]">[email protected]</a> echo $formatter->asEmail('[email protected]'),"<br>";
// output: Yes
echo $formatter->asBoolean(true),"<br>"; // output: (Not set) echo $formatter->asDate(null),"<br>";
?>
Step 3 - Đi tới http://localhost:8080/index.php?r=site/formatter, bạn sẽ thấy kết quả sau.
Các formatter thành phần hỗ trợ các định dạng sau liên quan đến ngày và giờ -
Định dạng đầu ra | Thí dụ |
---|---|
ngày | Ngày 01 tháng 01 năm 2016 |
thời gian | 16:06 |
ngày giờ | 01/01/2016 16:06 |
dấu thời gian | 1512609983 |
thời gian tương đối | 1 giờ trước |
thời hạn | 5 phút |
Step 4 - Sửa đổi formatter xem theo cách này.
<?php
$formatter = \Yii::$app->formatter;
echo $formatter->asDate(date('Y-m-d'), 'long'),"<br>"; echo $formatter->asTime(date("Y-m-d")),"<br>";
echo $formatter->asDatetime(date("Y-m-d")),"<br>"; echo $formatter->asTimestamp(date("Y-m-d")),"<br>";
echo $formatter->asRelativeTime(date("Y-m-d")),"<br>";
?>
Step 5 - Loại http://localhost:8080/index.php?r=site/formatter trong thanh địa chỉ của trình duyệt web, bạn sẽ thấy kết quả sau.
Định dạng ngày
Ngoài ra còn có bốn phím tắt định dạng ngày: short, medium, long, and full.
Step 1 - Sửa đổi formatter xem tệp theo cách này.
<?php
$formatter = \Yii::$app->formatter; echo $formatter->asDate(date('Y-m-d'), 'short'),"<br>";
echo $formatter->asDate(date('Y-m-d'), 'medium'),"<br>"; echo $formatter->asDate(date('Y-m-d'), 'long'),"<br>";
echo $formatter->asDate(date('Y-m-d'), 'full'),"<br>";
?>
Step 2 - Nếu bạn vào trình duyệt web và gõ http://localhost:8080/index.php?r=site/formatter, bạn sẽ thấy kết quả sau.
Định dạng số
Các formatter thành phần hỗ trợ các định dạng sau liên quan đến số:
Định dạng đầu ra | Thí dụ |
---|---|
số nguyên | 51 |
thập phân | 105,51 |
phần trăm | 51% |
thuộc về khoa học | 1.050000E + 2 |
tiền tệ | $ 105 |
kích thước | 105 byte |
shortSize | 105 B |
Step 1 - Sửa đổi formatter xem theo cách này.
<?php
$formatter = \Yii::$app->formatter;
echo Yii::$app->formatter->asInteger(105),"<br>"; echo Yii::$app->formatter->asDecimal(105.41),"<br>";
echo Yii::$app->formatter->asPercent(0.51),"<br>"; echo Yii::$app->formatter->asScientific(105),"<br>";
echo Yii::$app->formatter->asCurrency(105, "$"),"<br>";
echo Yii::$app->formatter->asSize(105),"<br>"; echo Yii::$app->formatter->asShortSize(105),"<br>";
?>
Step 2 - Đi tới http://localhost:8080/index.php?r=site/formatter, bạn sẽ thấy kết quả sau.
Các định dạng khác
Yii cũng hỗ trợ các định dạng khác -
text - Giá trị được mã hóa HTML.
raw - Giá trị được xuất ra nguyên trạng.
paragraphs- Giá trị được định dạng dưới dạng các đoạn văn bản HTML được bao bọc trong thẻ p .
ntext - Giá trị được định dạng dưới dạng văn bản thuần HTML trong đó các dòng mới được chuyển đổi thành các dấu ngắt dòng.
html - Giá trị được làm sạch bằng cách sử dụng HtmlPurifier để tránh các cuộc tấn công XSS.
image - Giá trị được định dạng dưới dạng thẻ hình ảnh.
boolean - Giá trị được định dạng dưới dạng boolean.
url - Giá trị được định dạng dưới dạng liên kết.
email - Giá trị được định dạng là một liên kết thư.
Người định dạng có thể sử dụng ngôn ngữ hiện đang hoạt động để xác định cách định dạng giá trị cho một quốc gia cụ thể.
Ví dụ sau đây cho thấy cách định dạng ngày cho các ngôn ngữ khác nhau.
<?php
Yii::$app->formatter->locale = 'ru-RU'; echo Yii::$app->formatter->asDate('2016-01-01'); // output: 1 января 2016 г.
Yii::$app->formatter->locale = 'de-DE'; // output: 1. Januar 2016 echo Yii::$app->formatter->asDate('2016-01-01');
Yii::$app->formatter->locale = 'en-US'; // output: January 1, 2016 echo Yii::$app->formatter->asDate('2016-01-01');
?>