目录

FuelPHP - Views

View是MVC应用程序的表示层。 它将应用程序逻辑与表示逻辑分开。 当控制器需要生成HTML,CSS或任何其他内容时,它会将任务转发给视图引擎。

FuelPHP提供了一个简单灵活的类View,其中包含视图引擎的所有必要功能。 View类支持渲染视图文件。 视图文件是包含PHP指令的HTML页面。 可以使用View类作为PHP数组设置视图文件的变量,并使用数组的键在视图文件中引用。 让我们检查一下View类的一些重要方法。

forge

  • Purpose - 创建新的View对象

  • Parameter - 以下是参数

    • $file - 相对于views文件夹,fuel/app/views的视图文件的路径

    • $data - 值数组

    • $filter - 设置自动编码,默认为主配置文件中的设置

  • Returns - 视图的实例

例如,

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

auto_filter

  • Purpose - 设置是否对数据进行编码

  • Parameter - 以下是参数

    • $filter - true/false

  • Returns - 当前视图对象

例如,

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

set_filename

  • Purpose - 允许设置或更改视图文件。

  • Parameter - 以下是参数 -

    • $file - 查看相对于views文件夹,fuel/app/views的$file路径

  • Returns - 当前视图对象

例如,

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

  • Purpose - 设置一个或多个变量的值

  • Parameter - 以下是参数

    • $key - 变量名称或值数组

    • $value - 值/ null

    • $filter - 编码设置,true/false

  • 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'

render

  • Purpose - 通过将视图文件与本地和全局变量合并,将视图文件呈现为字符串

  • Parameter - 以下是参数 -

    • $file - 视图文件名

  • Returns - 呈现的视图文件为字符串

例如,

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

创建一个视图 (Create a View)

要理解这些视图,让我们修改一下动作方法,控制器的action_showController_Employee

employee.php

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

现在在views目录中创建一个文件夹employee,位于fuel/app/views 。 然后,在employee文件夹中创建一个show.php文件并添加以下代码。

show.php

<h3> My first view </h3>

现在,请求URL http://localhost:8080/employee/show ,它会产生以下结果。

显示视图

将数据传递给视图

我们可以使用前面讨论的View方法将数据传递给视图。 以下是一个简单的例子。

employee.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后,它将显示名称和作业,如下所示 -

传递查看请求

查看过滤器

视图使用输出编码来传递您想要的任何内容。 如果要传递未过滤的数据,我们可以使用set方法。

employee.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支持嵌套视图。 在嵌套视图中,视图可以包含一个或多个视图。 要在另一个视图中设置视图,我们可以使用如下的render方法。

employee.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(); 
   } 
}

fuel/app/views/layout.php

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

fuel/app/views/head.php

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

fuel/app/views/employee/show.php

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

在请求URL, http://localhost:8080/employee/nestedview并检查源视图后,它提供以下代码。

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

模板控制器

FuelPHP提供了一个控制器,Controller_Template具有内置布局概念。 布局概念使用Controller的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变量更改默认模板,如下所示。

fuel/app/classes/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'); 
      } 
   } 

fuel/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> 

fuel/app/views/test/index.php

<h3>My Test page</h3>

现在,请求URL http://localhost:8080/test ,它会产生以下结果。

结果 (Result)

<!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控制台生成视图页面。 以下是基本语法。

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

要使用主页和登录页面生成管理控制器,请使用以下命令。

oil g controller admin home login

结果 (Result)

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
↑回到顶部↑
WIKI教程 @2018