我有 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 View 。
<?php echo $this->element('productForm'); ?>
这使您可以灵活地用特定于操作的元素包装表单,并进行可能特定于该操作的任何设置。例如,在产品表单下,您可能有一组不同的操作,例如“查看产品”,它在添加模式下没有意义,但在编辑模式下有意义。
@kaklon 提出了一个很好的观点,您应该在 productForm 元素中加入一些逻辑以确保编辑模式的行为正确:
if ($this->action == 'edit') {
echo $this->Form->input('id');
}
关于php - 我可以对不同的操作使用相同的 View 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4781459/