FuelPHP - มุมมอง

Viewเป็นเลเยอร์การนำเสนอของแอปพลิเคชัน MVC มันแยกตรรกะของแอปพลิเคชันออกจากตรรกะการนำเสนอ เมื่อคอนโทรลเลอร์ต้องการสร้าง HTML, CSS หรือเนื้อหาอื่น ๆ ตัวควบคุมจะส่งต่องานไปยังเอ็นจินมุมมอง

FuelPHP มีคลาสที่เรียบง่ายและยืดหยุ่นดูพร้อมคุณสมบัติที่จำเป็นทั้งหมดของเอ็นจิ้นมุมมอง คลาส View รองรับการเรนเดอร์ไฟล์วิว ดูไฟล์เป็นหน้า HTML ที่มีคำแนะนำ PHP ในตัว ตัวแปรของไฟล์มุมมองสามารถตั้งค่าได้โดยใช้คลาส View เป็นอาร์เรย์ PHP และอ้างอิงในไฟล์มุมมองโดยใช้คีย์ของอาร์เรย์ ให้เราตรวจสอบวิธีการที่สำคัญบางอย่างของคลาส View

ปลอม

  • Purpose - สร้างวัตถุมุมมองใหม่

  • Parameter - ต่อไปนี้เป็นพารามิเตอร์

    • $file - เส้นทางของไฟล์มุมมองที่สัมพันธ์กับโฟลเดอร์มุมมองเชื้อเพลิง / แอป / มุมมอง

    • $data - อาร์เรย์ของค่า

    • $filter - ตั้งค่าการเข้ารหัสอัตโนมัติเริ่มต้นเป็นการตั้งค่าในไฟล์กำหนดค่าหลัก

  • Returns - อินสแตนซ์ของมุมมอง

ตัวอย่างเช่น,

$view = View::forge ('path/to/view', array( 
   'title' => "Show employee, 
   'employees' => $employees, 
));

auto_filter

  • Purpose - ตั้งค่าว่าจะเข้ารหัสข้อมูลหรือไม่

  • Parameter - ต่อไปนี้คือพารามิเตอร์

    • $filter - จริง / เท็จ

  • Returns - วัตถุมุมมองปัจจุบัน

ตัวอย่างเช่น,

$view->auto_filter(); 
$view = $view->auto_filter(false);

set_filename

  • Purpose - อนุญาตให้ตั้งค่าหรือเปลี่ยนไฟล์มุมมอง

  • Parameter - ต่อไปนี้เป็นพารามิเตอร์ -

    • $file - เส้นทางในการดูไฟล์ที่สัมพันธ์กับโฟลเดอร์มุมมองเชื้อเพลิง / แอป / มุมมอง

  • Returns - วัตถุมุมมองปัจจุบัน

ตัวอย่างเช่น,

$view = new View();
$view>set_filename('path/to/view');

ชุด

  • Purpose - ตั้งค่าของตัวแปรหนึ่งตัวขึ้นไป

  • Parameter - ต่อไปนี้เป็นพารามิเตอร์

    • $key - ชื่อตัวแปรหรืออาร์เรย์ของค่า

    • $value - ค่า / null

    • $filter - การตั้งค่าการเข้ารหัสจริง / เท็จ

  • Returns - วัตถุมุมมองปัจจุบัน

ตัวอย่างเช่น,

$view = new View(); 
$view->set(array('name' => 'Jon'));

set_global

set_global คล้ายกับ setยกเว้นว่าจะใช้กับมุมมองทั้งหมดและตัวแปรสามารถเข้าถึงได้โดยมุมมองทั้งหมด นี่เป็นวิธีการคงที่

View::set_global('name', 'Jon', false);

set_safe

  • Purpose - ตั้งค่าของตัวแปรตั้งแต่หนึ่งตัวขึ้นไปด้วยการเข้ารหัสที่ปลอดภัย

  • Parameter - ต่อไปนี้เป็นพารามิเตอร์ -

    • $key - ชื่อตัวแปรหรืออาร์เรย์ของค่า

    • $value - ค่า / null

  • Returns - วัตถุมุมมองปัจจุบัน

ตัวอย่างเช่น,

$view = new View(); 
$view->set_safe(array('name' => 'Jon'), null);

ได้รับ

  • Purpose - รับค่าของตัวแปรตั้งแต่หนึ่งตัวขึ้นไป

  • Parameter - ต่อไปนี้เป็นพารามิเตอร์

    • $key - ชื่อตัวแปร

    • $default - ค่าเริ่มต้นที่จะส่งกลับหากไม่พบคีย์

  • Returns - ค่าของคีย์อินพุต

ตัวอย่างเช่น,

$view = new View(); 
$name = $view>get('name');  // name = 'Jon'

แสดงผล

  • Purpose - แสดงไฟล์มุมมองเป็นสตริงโดยรวมเข้ากับตัวแปรภายในและทั่วโลก

  • Parameter - ต่อไปนี้เป็นพารามิเตอร์ -

    • $file - ชื่อไฟล์มุมมอง

  • Returns - ไฟล์มุมมองที่แสดงผลเป็นสตริง

ตัวอย่างเช่น,

$html = View::forge()->render('/path/to/view');

สร้างมุมมอง

เพื่อให้เข้าใจถึงมุมมองให้เราปรับเปลี่ยนวิธีการดำเนินการaction_showของตัวควบคุม, Controller_Employee

staff.php

<?php  
   class Controller_Employee extends Controller { 
      public function action_show() {
         return View::forge('employee/show'); 
      } 
   }

ตอนนี้สร้างเป็นพนักงานโฟลเดอร์ในไดเรกทอรีวิวตั้งอยู่ที่น้ำมันเชื้อเพลิง / app / มุมมอง จากนั้นสร้างไฟล์show.phpภายในโฟลเดอร์พนักงานและเพิ่มรหัสต่อไปนี้

show.php

<h3> My first view </h3>

ตอนนี้ขอ url http: // localhost: 8080 / workers / showและสร้างผลลัพธ์ต่อไปนี้

ส่งผ่านข้อมูลไปดู

เราสามารถส่งข้อมูลไปยังมุมมองโดยใช้วิธีการดูตามที่กล่าวไว้ก่อนหน้านี้ ต่อไปนี้เป็นตัวอย่างง่ายๆ

staff.php

class Controller_Employee extends Controller { 
   public function action_show() { 
      $data = array(); //stores variables going to views 
      $data['name'] = ‘Jon’; 
      $data[‘job’] = ‘Designer’;  
      
      //assign the view to browser output 
      return View::forge('employee/show', $data); 
   } 
}

ตอนนี้เพิ่มการเปลี่ยนแปลงในไฟล์ view ไฟล์.

show.php

<html> 
   <body> 
      Hello, <?php echo $name; ?>. 
      Your job is, <?php echo $job; ?>. 
   </body> 
</html>

หลังจากขอ URL แล้วจะแสดงชื่อและงานดังนี้ -

ดูตัวกรอง

มุมมองใช้การเข้ารหัสเอาต์พุตเพื่อส่งผ่านสิ่งที่คุณต้องการ หากคุณต้องการส่งผ่านข้อมูลที่ไม่มีการกรองเราสามารถใช้วิธีการตั้งค่า

staff.php

class Controller_Employee extends Controller { 
   public function action_show() { 
      $view = \View::forge('employee/show'); 
      $view->set('name', 'Jon', true); 
      $view->set('job', '<em>Designer</em>', false); 
      return $view; 
   } 
}

หลังจากขอ URL แล้วจะแสดงรายละเอียดงานในลักษณะเน้นดังนี้

มุมมองที่ซ้อนกัน

FuelPHP รองรับมุมมองที่ซ้อนกัน ในมุมมองที่ซ้อนกันมุมมองสามารถมีได้ตั้งแต่หนึ่งมุมมองขึ้นไป ในการตั้งค่ามุมมองในมุมมองอื่นเราสามารถใช้วิธีการแสดงผลได้ดังนี้

staff.php

class Controller_Employee extends Controller { 
   public function action_nestedview() { 
      
      //assign variables 
      $data = array(); 
      $data['title'] = 'Home';  
      $data['name'] = 'Jon'; 
      $data['job'] = 'Designer';  
      $views = array(); 
      $views['head'] = View::forge('head', $data)->render(); 
      $views['content'] = View::forge('employee/show', $data)->render();  
      return View::forge('layout', $views, false)->render(); 
   } 
}

เชื้อเพลิง / app / views / layout.php

<html> 
   <head> 
      <?php echo $head; ?> 
   </head> 
   
   <body> 
      <?php echo $content; ?> 
   </body> 
</html>

เชื้อเพลิง / app / views / head.php

<title>
   <?php echo $title; ?>
</title>

เชื้อเพลิง / แอป / มุมมอง / พนักงาน / show.php

Hello, <?php echo $name; ?>. 
Your job is, <?php echo $job; ?>.

หลังจากขอ URL http: // localhost: 8080 / workers / nestedviewและตรวจสอบมุมมองต้นทางจะให้รหัสต่อไปนี้

<html> 
   <head> 
      <title>Home</title> 
   </head> 
   
   <body> 
      Hello, Jon. 
      Your job is, Designer. 
   </body> 
</html>

ตัวควบคุมเทมเพลต

FuelPHP มีคอนโทรลเลอร์ Controller_Template พร้อมแนวคิดเค้าโครงในตัว แนวคิดเค้าโครงทำได้โดยใช้before() และ after()วิธีการควบคุม ในการใช้ตัวควบคุมเทมเพลตเราจำเป็นต้องขยายคอนโทรลเลอร์โดยใช้ Controller_Template แทน Controller ในขณะที่ใช้เมธอด after () / before () เราต้องเรียก parent :: before และ parent :: after มิฉะนั้นเทมเพลตจะแตก

<?php 
   class Controller_Test extends Controller_Template { 
      public function before() { 
         parent::before(); 
         // do stuff 
      } 
        
      public function after($response) { 
         $response = parent::after($response); 
         
         // do stuff 
         return $response; 
      } 
   }

template.php

เป็นไฟล์เทมเพลตเริ่มต้นใน Fuel ไฟล์เทมเพลตใช้เพื่อเรียก JS, CSS, HTML และเรียกดูบางส่วน ตั้งอยู่ที่fuel/app/views/. เทมเพลตใช้เพื่อรวมมุมมองของคุณในเค้าโครงด้วยส่วนหัวส่วนท้ายแถบด้านข้าง ฯลฯ เราสามารถเปลี่ยนเทมเพลตเริ่มต้นโดยใช้ตัวแปร $ template ในวิธีการดำเนินการดังนี้

เชื้อเพลิง / app / class / controller / test.php

<?php  
   class Controller_Test extends Controller_Template { 
      public $template = 'template_test'; 
      public function action_index() { 
         $this->template->title = 'Example Page'; 
         $this->template->content = View::forge('test/index'); 
      } 
   }

เชื้อเพลิง / app / views / template_test.php

<!DOCTYPE html> 
<html> 
   <head> 
      <meta charset = "utf-8"> 
      <title><?php echo $title; ?></title> 
      <?php echo Asset::css('bootstrap.css'); ?> 
   </head> 

   <body> 
      <div> 
         <?php echo $content; ?>
      </div> 
   </body> 
</html>

เชื้อเพลิง / app / views / test / index.php

<h3>My Test page</h3>

ตอนนี้ขอ URL http: // localhost: 8080 / testและสร้างผลลัพธ์ต่อไปนี้

ผลลัพธ์

<!DOCTYPE html> 
<html> 
   <head> 
      <meta charset = "utf-8"> 
      <title>Example Page</title> 
      <link type = "text/css" rel = "stylesheet" 
         href = "http://localhost:8080/assets/css/bootstrap.css?1464964766" />
   </head> 
   
   <body> 
      <div> 
         <h3>My Test page</h3> 
      </div> 
   </body> 
</html>

สร้างหน้าดู

คุณสามารถสร้างหน้าดูได้โดยใช้คอนโซลน้ำมันของ Fuel ต่อไปนี้เป็นไวยากรณ์พื้นฐาน

oil g controller <controller-name> <page1> <page2> ..

ในการสร้างตัวควบคุมผู้ดูแลระบบด้วยหน้าแรกและหน้าล็อกอินให้ใช้คำสั่งต่อไปนี้

oil g controller admin home login

ผลลัพธ์

Creating view: /path/to/app/fuel/app/views/admin/home.php 
Creating view: /path/to/app/fuel/app/views/admin/login.php 
Creating controller: /path/to/app/fuel/app/classes/controller/admin.php