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');
?>