我正在使用cakephp 3.0.x,我想创建一个包含多个视图的页面。例如。如果我有来自其他模板的index.ctp,如下所示
我想创建一个名为Template / Main / index.ctp的页面。它包含来自Customers和Orders的index.ctp。基本上,视图中的视图(view-ception:P)。这可能吗?如果是这样,怎么样?
答案 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,因为它将使代码在将来更易于维护。