CakePHP的视图元素
多个网页在不同的位置重复引用某些特定的部分。 CakePHP可以帮助我们重用这些重复的部分。这些可重用部件称为元素-帮助框,额外菜单等;元素是一个迷你视图 ,我们可以在元素中传递变量。
CakeViewView::element(string $elementPath, array $data, array $options =[])
上面的函数有三个参数 -
第一个参数是在/src/Template/Element/文件夹中的模板文件的名称。
第二个参数是渲染视图所用用到的可用数据的数组。
第三个参数是可选项的数组。例如缓存。
在此3个参数中,第一个是必须的,其余的都是可选的。
例
在src/Template/Element目录中创建名为helloworld.ctp 的的元素文件。复制以下代码至其中。
src/Template/Element/helloworld.ctp
<p>Hello World</p>
在src/Template目录下创建一个名为Elems的文件夹,并在此Elems目录下创建一个名为index.ctp的视图文件。复制以下代码至其中。
src/Template/Elems/index.ctp
Element Example: <?php echo $this→element('helloworld'); ?>
在以下项目中,修改config/routes.php文件。
config/routes.php文件
<?php use CakeCorePlugin; use CakeRoutingRouteBuilder; use CakeRoutingRouter; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('/elementexample',['controller'=>'Elems','action'=>'index']); $routes->fallbacks('DashedRoute'); }); Plugin::routes();
在src/Controller/下创建ElemsController.php文件。复制以下代码至其中。
src/Controller/ElemsController.php
<?php namespace AppController; use AppControllerAppController; use CakeORMTableRegistry; use CakeDatasourceConnectionManager; class ElemsController extends AppController{ public function index(){ } } ?>
通过访问以下网址执行上面的例子。
http://localhost:85/CakePHP/element-example
输出
执行以上程序,您会看到以下页面。