cakephp 3.0.x扩展视图?

时间:2015-05-31 08:30:01

标签: php cakephp cakephp-3.0

我正在使用cakephp 3.0.x,我想创建一个包含多个视图的页面。例如。如果我有来自其他模板的index.ctp,如下所示

  • 模板/客户/ index.ctp
  • 模板/订单/ index.ctp

我想创建一个名为Template / Main / index.ctp的页面。它包含来自Customers和Orders的index.ctp。基本上,视图中的视图(view-ception:P)。这可能吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:3)

是的,如果您使用View Elements,则可以执行此操作。

执行此操作的最佳方法是为客户索引模板创建元素模板,然后在Customers / index和Main / index模板中输出,如下所示: -

// Output Template/Element/customers.ctp
echo $this->Element('customers');

Element模板将从调用模板继承变量,但您也可以将变量传递给它。例如,如果您需要$data变量,但已在控制器中将其设置为$customers: -

echo $this->Element('customers', ['data' => $customers]);

如果您不想创建实际的元素视图模板,而只想重复使用现有的客户/索引模板,您仍然可以在主/索引模板中使用$this->Element()输出它: -

// Output Template/Customers/index.ctp
echo $this->Element('../Customers/index');

就个人而言,我会避免这样做并选择第一个示例并修改现有的Customers / index以使用Element,因为它将使代码在将来更易于维护。