Thứ Tư, 5 tháng 12, 2018

FuelPHP - Chủ đề

Chủ đề được sử dụng để cho phép nhiều giao diện cho ứng dụng lập trình PHP. Nó cung cấp tùy chọn cho người dùng / nhà phát triển để thay đổi giao diện của ứng dụng mà không làm phiền chức năng của ứng dụng. Ứng dụng có thể có một hoặc nhiều chủ đề.

Mỗi chủ đề sống trong thư mục riêng của nó. Hãy để chúng tôi tìm hiểu cách tạo chủ đề trong chương này.

Cấu hình chủ đề

Học lập trình PHP. PHP cung cấp một tệp cấu hình riêng cho các chủ đề, nhiên liệu / app / config / themes.php . Tất cả các cài đặt liên quan đến chủ đề được định cấu hình trong tệp này. Một số cài đặt chủ đề chính như sau:

Học lập trình PHP

active - Tên chủ đề đang hoạt động

dự phòng - Tên của chủ đề dự phòng, nếu không tìm thấy chủ đề hoạt động

đường dẫn - Mảng đường dẫn để tìm kiếm và tìm chủ đề

asset_folder - Thông thường, nội dung cần phải nằm trong DOCPATH để có thể truy cập thông qua web. Nó đề cập đến thư mục tài sản cho các chủ đề bên trong DOCPATH

view_ext - Mở rộng tệp xem của chủ đề

info_file_name - Tệp có thông tin mở rộng về chủ đề

require_info_file - Cho dù yêu cầu tệp thông tin chủ đề, info_file_name

use_modules - Có sử dụng mô-đun hiện tại hay không

Cấu hình đơn giản cho tập tin chủ đề như sau.
<?php  
   return array ( 
      'active' => 'tpthemes', 
      'fallback' => 'tpthemes', 
      'paths' => array ( 
         APPPATH.'themes', 
      ), 
      'assets_folder' => 'assets', 
      'view_ext' => '.html', 
      'require_info_file' => false, 
      'info_file_name' => 'themeinfo.php', 
      'use_modules' => false, 
   ); 
Ở đây chúng tôi đã thiết lập,

Tên của chủ đề hoạt động và dự phòng là tpthemes

Đường dẫn của thư mục chủ đề là nhiên liệu / ứng dụng / chủ đề /

Đường dẫn của thư mục tài sản là / public / assets / tpthemes /

Lớp chủ đề

Khi cấu hình xong, chúng ta có thể sử dụng class, Theme do PHP cung cấp để thực hiện chức năng của theme. Hãy cho chúng tôi biết về các phương pháp có sẵn trong lớp Chủ đề trong chương này.

ví dụ

phương pháp thể hiện cho phép tạo chủ đề mới. Nó có hai tham số sau,

$ name - Tên của chủ đề (tùy chọn)

$ config - Mảng cấu hình chủ đề (giống như được thấy trong phần cấu hình)

Cả hai tham số đều là tùy chọn. Nếu không có tham số nào được chỉ định, nó sẽ cố gắng lấy chủ đề mặc định từ tệp cấu hình. Nếu tên chủ đề được chỉ định, nó sẽ cố gắng lấy các cài đặt khác từ tệp cấu hình. Nếu cấu hình được chỉ định là tốt, thì nó sẽ sử dụng cài đặt do người dùng chỉ định thay vì thiết lập từ tệp cấu hình.
$theme = \Theme::instance(); 
$theme = \Theme::instance('tpthemes'); 
$theme = \Theme::instance ('mytheme', array ( 
   'active' => 'mytheme', 'view_ext' => '.php')); 

làm giả

giả mạo tương tự như ví dụ, ngoại trừ nó chỉ có mảng cấu hình.
$theme = \Theme::forge (array( 
   'active'   => 'tpthemes', 
   'fallback' => 'tpthemes', 
   'view_ext' => '.php', 
));

lượt xem

phương thức xem sử dụng View :: forge () trong nền. Cả hai API đều giống nhau, ngoại trừ phương thức xem tìm kiếm tệp xem trong thư mục chủ đề, nhiên liệu / ứng dụng / chủ đề / tpthemes / thay vì nhiên liệu / ứng dụng / lượt xem / thư mục.
$theme = \Theme::instance(); 
$view = $theme->view('template/index'); 
// *fuel/app/themes/tpthemes/template/index.php 

người trình bày

phương pháp trình bày sử dụng Presenter :: forge () trong nền. Cả hai API đều giống nhau, ngoại trừ phương pháp trình bày tìm kiếm tệp xem trong thư mục chủ đề, nhiên liệu / ứng dụng / chủ đề / tpthemes / thay vì nhiên liệu / ứng dụng / lượt xem / thư mục.
$theme = \Theme::instance(); 
$presenter = $theme->presenter('template/index');

asset_path

Phương thức asset_path trả về đường dẫn đến nội dung được yêu cầu liên quan đến chủ đề hiện được chọn.
$theme = \Theme::instance();  

// public/assets/tpthemes/css/style.css 
$style = \Html::css($theme->asset_path('css/style.css')); 

add_path

phương thức add_path cho phép thêm một đường dẫn chủ đề khi chạy.
$theme = \Theme::instance(); 
$theme->add_path(DOCROOT.'newthemes');

add_paths

phương thức add_paths cho phép thêm nhiều đường dẫn chủ đề khi chạy.
$theme = \Theme::instance();   
$theme->add_path(DOCROOT.'newthemes'); 

hoạt động

phương thức hoạt động cho phép thiết lập chủ đề đang hoạt động.
$theme = \Theme::instance(); 
$active = $theme->active('newtheme'); 

dự phòng

phương thức dự phòng cho phép thiết lập chủ đề dự phòng.
$theme = \Theme::instance();
$fallback = $theme->fallback('custom'); 

get_template

Phương thức get_template sẽ trả về trường hợp Xem của mẫu chủ đề hiện đang được tải.
$theme = \Theme::instance(); 
$theme->get_template()->set('body', 'Theme can change the look and feel of your app');

set_template

phương thức set_template cho phép thiết lập mẫu theme cho trang.
$theme = \Theme::instance(); 
$theme->set_template('layouts/index')->set('body', 'set theme template');

tìm thấy

tìm trả về true, nếu đường dẫn đến chủ đề được tìm thấy, nếu không nó sẽ trả về false.
$theme = \Theme::instance(); 
$path = $theme->find('newtheme')

tất cả các

tất cả các phương thức trả về một mảng của tất cả các chủ đề trong tất cả các đường dẫn chủ đề.
$theme = \Theme::instance(); 
$themes = $theme->all(); 

nhận thông tin

Phương thức get_info trả về một biến cụ thể từ mảng thông tin chủ đề. Nếu không có chủ đề nào được chỉ định, mảng thông tin của chủ đề đang hoạt động được sử dụng.
$theme = \Theme::instance(); 
$var = $theme->get_info('color', 'green', 'newtheme');
Ở đây, phương thức lấy màu được định nghĩa trong 'newtheme'. Nếu nó không được xác định, sau đó nó sẽ sử dụng 'xanh' làm màu mặc định.

set_info

phương thức set_info đặt biến trong chủ đề hoạt động hoặc dự phòng.
$theme->set_info('color', 'green', 'fallback'); 
set_partial

phương thức set_partial cho phép thiết lập một phần khung nhìn cho một phần được đặt tên trong mẫu trang của bạn. Thông thường, nó được thực hiện thông qua cuộc gọi HMVC.
$theme = \Theme::instance(); 
$theme->set_template('layouts/homepage'); 
$theme->set_partial('navbar', 'homepage/navbar'); 
get_partial

phương thức get_partial cho phép để có được thể hiện khung nhìn của một phần được thiết lập trước đó trong một phần được đặt tên trong mẫu trang của bạn.
$theme = \Theme::instance(); 
$theme->set_partial('sidebar', 'partials/menu'); 
$theme->get_partial('sidebar', 'partials/menu')->set('class', 'menu green');
Ví dụ làm việc

Hãy để chúng tôi thêm hỗ trợ chủ đề trong ứng dụng nhân viên của chúng tôi.

Bước 1 - Thêm tập tin cấu hình chủ đề mới, nhiên liệu / app / config / theme.php với các nội dung sau đây.
<?php  
   return array ( 
      'active' => 'tpthemes',
      'fallback' => 'tpthemes', 
      'paths' => array (APPPATH.'themes', ), 
      'assets_folder' => 'assets', 
      'view_ext' => '.html', 
      'require_info_file' => false, 
      'info_file_name' => 'themeinfo.php', 
      'use_modules' => false, 
   );
Bước 2 - Thêm thư mục tài sản mới, public / assets / tpthemes / css cho chủ đề, tpthemes.

cd /go/to/app/root/path 
mkdir -p public/assets/tpthemes/css 

Bước 3 - Tải về bootstrap mới nhất và đặt bootstrap.min.css dưới public / assets / tpthemes / css

Bước 4 - Thêm thư mục mới, tpthemes dưới thư mục nhiên liệu / ứng dụng / chủ đề.

cd /go/to/app/root/path   
mkdir -p fuel/app/themes/tpthemes 

Bước 5 - Thêm mẫu bố cục mới, bootstrap.html dưới mục nhiên liệu / ứng dụng / chủ đề / tpthemes / layout / và thêm mã sau đây.
<!DOCTYPE html> 
<html lang = "en"> 
   <head> 
      <title>Theme example</title> 
      <meta charset = "utf-8"> 
      <meta name = "viewport" content = "width = device-width, initial-scale = 1"> 
      <!-- Bootstrap core CSS --> 
      <?php echo \Theme::instance()->asset->css('bootstrap.min.css'); ?> 
   </head> 
   
   <body> 
      <?php echo $header; ?> 
      <div class = "container"> 
         <div class = "row">
            <div class = "col-sm-12"> 
               <?php echo $content; ?> 
            </div> 
         </div> 
      </div> 
   </body>
   
</html> 
Ở đây, chúng ta đã sử dụng cá thể chủ đề và phương thức asset để lấy đường dẫn của tệp tin bootstrap. Chúng tôi đã xác định hai biến, tiêu đề và nội dung. tiêu đề được xác định để đặt chi tiết tiêu đề động. nội dung được xác định để đặt nội dung thực tế của trang động.

Bước 6 - Thêm tiêu đề mẫu mới, header.php tại nhiên liệu / ứng dụng / chủ đề / tpthemes / partials như sau.
<div class = "jumbotron text-center">
   <h1>Theme support in fuelphp</h1> 
   <p>bootstrap based template</p>  
</div> 
Bước 7 - Tạo một bộ điều khiển mới, ThemeSample tại nhiên liệu / app / classes / controller / themesample.php và action tại action_index như sau.
<?php  
   class Controller_ThemeSample extends \Controller { 
      public function before() { 
         $this->theme = \Theme::instance(); 
         $this->theme->set_template('layouts/bootstrap');  
         $header = $this->theme->view('partials/header'); 
         $this->theme->get_template()->set('header', $header); 
      }  
      public function action_index() { 
         $content = $this->theme 
         ->view('themesample/index') 
         ->set('message', 'This data comes from action page');  
         $this->theme 
         ->get_template() 
         ->set('content', $content); 
      } 
      public function after($response) { 
         if (empty($response) or  ! $response instanceof Response) { 
            $response = \Response::forge(\Theme::instance()->render()); 
         } 
         return parent::after($response); 
      } 
   }

Ở đây, chúng ta đã sử dụng trước và sau phương thức để khởi tạo chủ đề bằng cách sử dụng các phương thức của lớp Theme . Một số phương thức được sử dụng là instance, get_template, set_template và view.

Bước 8 - Cuối cùng, thêm khung nhìn cho hành động index, index.php tại nhiên liệu / app / themes / tpthemes / themesample như sau.
<p>The data comes from *fuel/app/themes/tpthemes/themesample/index.html* file.</p> 
<p> 
   <?php echo $message; ?> 
</p>
Ở đây, chúng tôi đã xác định một biến, tin nhắn, mà cần phải được thiết lập tự động trong bộ điều khiển.

Chúng tôi đã tạo ra một chủ đề mới, tpthemes và sử dụng nó trong bộ điều khiển ThemeSample . Bây giờ chúng ta hãy kiểm tra kết quả bằng cách yêu cầu URL, http: // localhost: 8080 / themesample / index. Kết quả là như sau.

Không có nhận xét nào:

Đăng nhận xét

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...