Yii - Chủ đề
Chủ đề giúp bạn thay thế một tập hợp các chế độ xem bằng một tập hợp các chế độ xem khác mà không cần phải sửa đổi các tệp chế độ xem gốc. Bạn nên đặttheme thuộc tính của thành phần ứng dụng dạng xem để sử dụng chủ đề.
Bạn cũng nên xác định các thuộc tính sau:
yii\base\Theme::$basePath - Xác định thư mục cơ sở cho CSS, JS, hình ảnh, v.v.
yii\base\Theme::$baseUrl - Xác định URL cơ sở của các tài nguyên theo chủ đề.
yii\base\Theme::$pathMap - Xác định các quy tắc thay thế.
Ví dụ, nếu bạn gọi $this->render('create') trong UserController, @app/views/user/create.phpxem tệp sẽ được hiển thị. Tuy nhiên, nếu bạn bật chúng như trong cấu hình ứng dụng sau, tệp xem @ app / themes / basic / user / create.php sẽ được hiển thị.
Step 1 - Sửa đổi config/web.php nộp hồ sơ theo cách này.
<?php
$params = require(__DIR__ . '/params.php'); $config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
'request' => [
// !!! insert a secret key in the following (if it is empty) - this
//is required by cookie validation
'cookieValidationKey' => 'ymoaYrebZHa8gURuolioHGlK8fLXCKjO',
],
'cache' => [
'class' => 'yii\caching\FileCache',
],
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure a transport
// for the mailer to send real emails.
'useFileTransport' => true,
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'view' => [
'theme' => [
'basePath' => '@app/themes/basic',
'baseUrl' => '@web/themes/basic',
'pathMap' => [
'@app/views' => '@app/themes/basic',
],
],
],
'db' => require(__DIR__ . '/db.php'),
],
'modules' => [
'hello' => [
'class' => 'app\modules\hello\Hello',
],
],
'params' => $params, ]; if (YII_ENV_DEV) { // configuration adjustments for 'dev' environment $config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [ 'class' => 'yii\debug\Module', ]; $config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [ 'class' => 'yii\gii\Module', ]; } return $config;
?>
Chúng tôi đã thêm thành phần ứng dụng xem.
Step 2 - Bây giờ tạo web/themes/basic cấu trúc thư mục và themes/basic/site. Bên trong thư mục themes / basic / site, tạo một tệp có tênabout.php với đoạn mã sau.
<?php
/* @var $this yii\web\View */ use yii\helpers\Html; $this->title = 'About';
$this->params['breadcrumbs'][] = $this->title;
$this->registerMetaTag(['name' => 'keywords', 'content' => 'yii, developing, views, meta, tags']); $this->registerMetaTag(['name' => 'description', 'content' => 'This is the
description of this page!'], 'description');
?>
<div class = "site-about">
<h1><?= Html::encode($this->title) ?></h1>
<p style = "color: red;">
This is the About page. You may modify the following file to customize its content:
</p>
</div>
Step 3 - Bây giờ, đi tới http://localhost:8080/index.php?r=site/about, các themes/basic/site/about.php tệp sẽ được hiển thị, thay vì views/site/about.php.
Step 4 - Đối với các mô-đun chủ đề, hãy định cấu hình thuộc tính yii \ base \ Theme :: $ pathMap theo cách này.
'pathMap' => [
'@app/views' => '@app/themes/basic',
'@app/modules' => '@app/themes/basic/modules',
],
Step 5 - Để các widget chủ đề, hãy cấu hình yii\base\Theme::$pathMap tài sản theo cách này.
'pathMap' => [
'@app/views' => '@app/themes/basic',
'@app/widgets' => '@app/themes/basic/widgets', // <-- !!!
],
Đôi khi bạn cần chỉ định một chủ đề cơ bản chứa giao diện cơ bản của ứng dụng. Để đạt được mục tiêu này, bạn có thể sử dụng kế thừa chủ đề.
Step 6 - Sửa đổi thành phần ứng dụng xem theo cách này.
'view' => [
'theme' => [
'basePath' => '@app/themes/basic',
'baseUrl' => '@web/themes/basic',
'pathMap' => [
'@app/views' => [
'@app/themes/christmas',
'@app/themes/basic',
],
]
],
],
Trong cấu hình trên, @app/views/site/index.phptệp chế độ xem sẽ có chủ đề là @ app / themes / christmas / site / index.php hoặc @ app / themes / basic / site / index.php, tùy thuộc vào tệp nào tồn tại. Nếu cả hai tệp đều tồn tại, tệp đầu tiên sẽ được sử dụng.
Step 7 - Tạo themes/christmas/site Cấu trúc thư mục.
Step 8 - Bây giờ, bên trong thư mục themes / christmas / site, tạo một tệp có tên about.php với đoạn mã sau.
<?php
/* @var $this yii\web\View */
use yii\helpers\Html;
$this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; $this->registerMetaTag(['name' => 'keywords', 'content' => 'yii, developing,
views, meta, tags']);
$this->registerMetaTag(['name' => 'description', 'content' => 'This is the
description of this page!'], 'description');
?>
<div class = "site-about">
<h2>Christmas theme</h2>
<img src = "http://pngimg.com/upload/fir_tree_PNG2514.png" alt = ""/>
<p style = "color: red;">
This is the About page. You may modify the following file to customize its content:
</p>
</div>
Step 9 - Nếu bạn đi đến http://localhost:8080/index.php?r=site/about, bạn sẽ thấy trang giới thiệu được cập nhật bằng chủ đề Giáng sinh.