我有 Controller “产品”,具有操作“添加”和“编辑”。
我将 View “add.ctp”制成了很长的格式。想知道我是否可以使用相同的 View 来生成显示“编辑”。我需要在 Controller 中的edit(){}下放置什么,以使其输出到“add.ctp”而不是“edit.ctp”?
谢谢。
最佳答案
您可以使用:
$this->render('add');
在 Controller 的编辑功能末尾,但我不建议这样做。
更好的解决方案是做一个小的重构,将add.ctp的内容放入一个元素(例如app / views / elements / productForm.ctp),然后在add.ctp和edit.ctp中使用该元素意见。
<?php echo $this->element('productForm'); ?>
这使您可以灵活地将表单与特定于操作的元素包装在一起,并进行可能特定于该操作的任何设置。例如,在产品表单下,您可能具有一组不同的操作,例如“查看产品”,在添加模式下没有意义,而在编辑模式下却有意义。
@kaklon提出了一个很好的观点,您应该在productForm元素中添加一些逻辑以确保编辑模式正确运行:
if ($this->action == 'edit') {
echo $this->Form->input('id');
}