codecamp

CakePHP的视图

在MVC中,字母“V”就是视图(View)。视图负责发送基于请求的输出给用户。 视图类(View Classes)是加快开发过程的有效方式。

视图模板

CakePHP中的视图模板文件具有默认扩展名.ctp(CakePHP Template)。这些模板从控制器获取数据,渲染输出并适当的显示给用户。我们可以在模版中使用变量,和各种控制结构。

模板文件存储在src/Template/中的一个以使用他的控制器命名的文件夹,或者以它所对应的行为命名的文件夹中。例如,对于产品控制器(Products Controller)view

()行为的视图文件,通常就是src/Template/Products/view.ctp。

总之,控制器(如ProductsController的)的名称和作为目录(Products)的名称相同,但不包含Controller;控制器(如ProductsController)的行为/方法的名称(如view())是和视图文件的名称是相同的(如view.ctp)。

视图变量

视图变量是用来得到控制器值的变量。我们可以在视图模板中使用尽可能多的变量。我们可以使用set()方法在视图中传递值。这些变量集可以在你的视图文件和你要渲染的布局中使用。以下是set()方法的语法。

语法

CakeViewView::set(string $var, mixed $value)

这种方法有两个参数- 变量名 。

在以下程序中,修改config/routes.php文件

config/routes.php文件

<?php
   use CakeCorePlugin;
   use CakeRoutingRouteBuilder;
   use CakeRoutingRouter;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('template',['controller'=>'Products','action'=>'view']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();

src/Controller/目录下创建ProductsController.php文件。复制以下代码至其中。

src/Controller/ProductsController.php

<?php
   namespace AppController;
   use AppControllerAppController;
   
   class ProductsController extends AppController{
      public function view(){
         $this->set('Product_Name','XYZ');
      }
   }
?>

src/Template下创建Products目录,并在Products目录下创建一个名为view.ctp视图文件复制以下代码代码至其中。

src/Template/Products/view.ctp

Value of variable is: <?php echo $Product_Name; ?>

通过访问以下网址执行上面的例子。

http://localhost:85/CakePHP/template

输出

上述网址会产生以下输出。




CakePHP的控制器
CakePHP的扩展视图
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

CakePHP Useful Resources

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }