codecamp

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

输出

执行以上程序,您会看到以下页面。



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