FuelPHP 视图

fuelphp 视图

 

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

fuelphp 提供了一个简单而灵活的类 view,它具有视图引擎的所有必要功能。视图类支持视图文件的渲染。视图文件是一个带有嵌入式 php 指令的 html 页面。视图文件的变量可以使用 view 类设置为 php 数组,并使用数组的键在视图文件中引用。让我们来看看view类的一些重要方法。

 

锻造

  • 目的-创建一个新的视图对象
  • 参数-以下是参数
  • $file-视图文件相对于视图文件夹的路径,fuel/app/views
  • $data-值数组
  • $filter-设置自动编码,默认为主配置文件中的设置
  • 返回-视图的实例

 

例如

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

 

auto_filter

  • 目的-设置是否对数据进行编码
  • 参数-以下是参数
  • $filter-true/false
  • 返回-当前视图对象

例如

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

 

set_filename

  • 目的-允许设置或更改视图文件。
  • 参数-以下是参数-
  • $file-相对于视图文件夹、fuel/app/views 的查看文件路径
  • 返回-当前视图对象

例如

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

 

设置

  • 目的-设置一个或多个变量的值
  • 参数-以下是参数
  • $key-变量名或值数组
  • $value-值/空
  • $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-值/空
  • 返回-当前视图对象

例如

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

 

得到

  • 目的-获取一个或多个变量的值
  • 参数-以下是参数
  • $key-变量名
  • $default-未找到键时返回的默认值
  • 返回-输入键的值

例如

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

 

渲染

  • 目的-通过将视图文件与局部和全局变量合并,将其呈现为字符串
  • 参数-以下是参数-
  • $file-视图文件名
  • returns-呈现的视图文件作为字符串

例如

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

 

创建视图

为了理解视图,让我们修改控制器的动作方法, action_show, controller_employee。

 

employee.php

  
   class controller_employee extends controller { 
      public function action_show() {
         return view::forge('employee/show'); 
      } 
   }

现在在位于 fuel/app/views 的 views 目录中创建一个文件夹 employee。然后,在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

 
    
      hello,  echo $name; . 
      your job is,  echo $job; . 
    

请求 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

 
    
       echo $head;  
    
   
    
       echo $content;  
    
 

 

fuel/app/views/head.php

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

 

fuel/app/views/employee/show.php

hello,  echo $name; . 
your job is,  echo $job; .

请求 url, http://localhost:8080/employee/nestedview 并查看源视图后,它给出了以下代码。

 
    
      <title>home</title> 
    
   
    
      hello, jon. 
      your job is, designer. 
    

 

模板控制器

fuelphp 提供了一个具有内置布局概念的控制器 controller_template。布局概念是使用控制器的 before() 和 after() 方法完成的。要使用模板控制器,我们需要使用 controller_template 而不是 controller 来扩展控制器。使用after()/before()方法时,需要调用parent::before和parent::after,否则模板会中断。

 
   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; 
      } 
   }

 

模板.php

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

 

fuel/app/classes/controller/test.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

 
 
    
      <meta charset="utf-8"> 
      <title><?php echo $title; ?></title> 
       echo asset::css('bootstrap.css');  
    
    
      
echo $content;

 

fuel/app/views/test/index.php

<h3>my test page</h3>

现在,请求 url http://localhost:8080/test 并产生以下结果。

 

结果

 
 
    
      <meta charset="utf-8"> 
      <title>example page</title> 
      <link type="text/css" rel="stylesheet" href="http://localhost:8080/assets/css/bootstrap.css?1464964766">     
   
    
      
<h3>my test page</h3>

 

生成查看页面

您可以使用 fuel's oil 控制台生成视图页面。以下是基本语法。

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

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

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

下一节:fuelphp 演示者

fuelphp 教程

相关文章