在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.ctpValue of variable is: <?php echo $Product_Name; ?>
通过访问以下网址执行上面的例子。
http://localhost:85/CakePHP/template
输出
上述网址会产生以下输出。