Cakephp将long view.ctp拆分为较小的

时间:2012-08-19 16:20:00

标签: php templates cakephp

我在蛋糕中的一个视图文件变得非常长,就像300多行一样。而且我发现很难跟踪理解。

将它们拆分成较小的文件然后将它们包含在父视图文件中是一个好主意吗?

如果可以,

  1. 我应该在什么扩展名中创建较小的文件? .ctp或.php?
  2. 用require_once(view-child1.ext)包含它们应该没问题,对吗?
  3. 我是蛋糕PHP的新手。所以我更喜欢这里的专家建议。请把我放在正确的方向。

    修改

    感谢帮助人员。

    我试了一下。但我似乎无法通过变量。 echo $ this->元素('reviews / view-goal',$ history);父视图显示并在该元素中显示未定义变量的错误。

    我从这个循环调用元素:

    foreach($histories as $date => $history)
    

    无法通过$历史。但美元的历史正确传递。

2 个答案:

答案 0 :(得分:1)

是的,这是一个非常好的主意。但是不要使用PHP的正常require()

CakePHP有一个feature called "elements",一种将视图的一部分放入单独的.ctp文件的机制。这些文件位于特殊文件夹View/Elements

您可以添加如下元素:

echo $this->element('sidebar/recent_comments');

如果元素中需要任何变量,则需要在另一个数组参数中传递它们:

echo $this->element('sidebar/recent_comments', array('variable_name' => /* Variable content */));

为了保持视图文件的小,您还应确保将大多数页面(页眉,页脚)共享的内容放入Layout文件中。显然:将JS和CSS保存在外部文件中。

答案 1 :(得分:1)

您应该在View/Elements文件夹中添加.ctp扩展名。

This link可以帮助您使用相关/重复的代码清晰地分离视图文件。

元素基本上是一个迷你视图,可以包含在其他视图中,布局中,甚至包含在其他元素中。元素可用于使视图更具可读性,将重复元素的呈现放在其自己的文件中。它们还可以帮助您在应用程序中重用内容片段。

元素位于/ app / View / Elements /文件夹中,并具有.ctp文件扩展名。它们使用视图的元素方法输出:

<?php echo $this->element('helpbox'); //without extension ?>

您可以将视图中的变量传递给元素。

在您看来:

 <?php echo $this->Element('reviews/view-goal', array('history' => $history));

在view-goal.ctp元素中,您可以直接访问$history变量。