很多时候,当制作网页时,我们想在网页页面重复另一网页的某些部分。 CakePHP能实现从一个视图继承一个视图,因此,我们不必再重复写代码。extend()方法用于在视图文件中继承视图。这个方法需要一个参数,带文件路径的视图文件名,但不必带扩展名.ctp。
例
在以下项目中,修改如下所示config/routes.php文件。
config/routes.php<?php
use CakeCorePlugin;
use CakeRoutingRouteBuilder;
use CakeRoutingRouter;
Router::defaultRouteClass('DashedRoute');
Router::scope('/', function (RouteBuilder $routes) {
$routes->connect('extend',['controller'=>'Extends','action'=>'index']);
$routes->fallbacks('DashedRoute');
});
Plugin::routes();
在src/Controller/下创建ExtendsController.php文件。复制以下代码至其中。
src/Controller/ExtendsController.php<?php
namespace AppController;
use AppControllerAppController;
class ExtendsController extends AppController{
public function index(){
}
}
?>
在src/Template目录下创建一个名为Extends的文件夹,并在Extends文件夹下创建一个名为header.ctp的视图文件。复制以下代码至其中。
src/Template/Extends/header.ctp
Common Header
= $this->fetch('content') ?>
在Extends目录下创建另一个视图文件index.ctp。复制以下代码至其中。在这里,我们继承了header.ctp。
src/Template/Extends/index.ctp<?php $this->extend('header'); ?>
This is an example of extending view.
通过访问以下网址执行上面的例子。
http://localhost:85/CakePHP/extend
输出
执行以上程序,您会看到以下页面。