📜  FuelPHP-视图

📅  最后修改于: 2020-10-25 04:22:40             🧑  作者: Mango


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

FuelPHP提供了一个简单而灵活的类View,它具有视图引擎的所有必需功能。 View类支持呈现视图文件。查看文件是带有嵌入式PHP指令的HTML页面。可以使用View类将其设置为PHP数组,并使用该数组的键在视图文件中引用该视图文件的变量。让我们检查一下View类的一些重要方法。

锻造

  • 目的-创建一个新的View对象

  • 参数-以下是参数

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

    • $ data-值数组

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

  • 返回-视图的实例

例如,

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

自动过滤

  • 目的-设置是否编码数据

  • 参数-以下是参数

    • $ filter-是/否

  • 返回-当前视图对象

例如,

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

set_filename

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

  • 参数-以下是参数-

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

  • 返回-当前视图对象

例如,

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

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

  • 参数-以下是参数

    • $ key-变量名或值数组

    • $ value-值/ null

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

  • 返回-当前视图对象

例如,

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

set_global

set_global与set相似,不同之处在于它适用于所有视图,并且所有视图都可以访问变量。这是一种静态方法。

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

set_safe

  • 目的-设置一个或多个安全编码为开的变量的值。

  • 参数-以下是参数-

    • $ key-变量名或值数组

    • $ value-值/ null

  • 返回-当前视图对象

例如,

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

得到

  • 目的-获取一个或多个变量的值

  • 参数-以下是参数

    • $ key-变量名

    • $ default-如果找不到密钥,则返回默认值

  • 返回-输入键的值

例如,

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

渲染

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

  • 参数-以下是参数-

    • $ file-视图文件名

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

例如,

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

创建一个视图

为了理解这些视图,让我们修改控制器Controller_Employee的操作方法action_show

employee.php

现在,在加油站/ app / views的views目录中创建一个雇员文件夹。然后,在员工文件夹内创建文件show.php并添加以下代码。

show.php

My first view

现在,请求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); 
   } 
}

现在,将更改添加到视图文件中。

show.php

Hello, . 
      Your job is, . 
    

请求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', 'Designer', 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

 
    
   
    
       
    
 

fuel / app / views / head.php


   <?php echo $title; ??>
 

加油/应用程序/视图/员工/show.php

Hello, . 
Your job is, .

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

Home 
    
   
    
      Hello, Jon. 
      Your job is, Designer. 
    

模板控制器

FuelPHP提供具有内置布局概念的控制器Controller_Template。布局概念是使用Controller的before()after()方法完成的。要使用模板控制器,我们需要使用Controller_Template而不是Controller扩展控制器。在使用after()/ before()方法时,我们需要调用parent :: before和parent :: after,否则,模板将中断。

template.php

它是Fuel中的默认模板文件。模板文件用于调用JS,CSS,HTML和调用视图部分。它位于fuel / app / views / 。模板用于将视图包装在具有页眉,页脚,侧边栏等的布局中。我们可以在action方法中使用$ template变量来更改默认模板,如下所示。

燃料/应用程序/类/控制器/test.php

template->title = 'Example Page'; 
         $this->template->content = View::forge('test/index'); 
      } 
   } 

fuel / app / views / template_test.php

 
      <?php echo $title; ??> 
       
    

    
      

燃料/应用程序/视图/测试/index.php

My Test page

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

结果

 
      Example Page 
      
    
   
    
      

My Test page

产生检视页面

您可以使用Fuel’s Oil控制台生成视图页面。以下是基本语法。

oil g controller    ..

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

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