我可以使用相同的视图进行不同的操作吗?

cod*_*613 2 php model-view-controller cakephp cakephp-1.3

我有控制器,'产品',动作'添加'和'编辑'.

我创建了一个长形式的"add.ctp"视图.想知道我是否可以使用相同的视图来生成显示'编辑'.我需要在edit(){}下放入控制器,使其输出为'add.ctp'而不是'edit.ctp'?

谢谢.

ian*_*nes 6

你可以使用:

$this->render('add');
Run Code Online (Sandbox Code Playgroud)

在控制器编辑功能的最后,但我不推荐它.

一个更好的解决方案是做一个小的重构,将add.ctp的内容放入一个元素(例如app/views/elements/productForm.ctp),然后使用add.ctp和edit.ctp中的那个元素.观点.

<?php echo $this->element('productForm'); ?>
Run Code Online (Sandbox Code Playgroud)

这使您可以灵活地使用特定于操作的元素包装表单,并执行可能特定于该操作的任何设置.例如,在产品表单下,您可能有一组不同的操作,例如"查看产品"在添加模式下没有意义但在编辑模式下没有意义.

@kaklon提出了一个非常好的观点,你应该在productForm元素中添加一些逻辑,以确保编辑模式正常运行:

if ($this->action == 'edit') {
    echo $this->Form->input('id');
}
Run Code Online (Sandbox Code Playgroud)