php - 我可以对不同的操作使用相同的 View 吗?

标签 php model-view-controller cakephp cakephp-1.3

我有 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/

相关文章:

php - 在 mySql 连接语句中显示第一个表的所有结果,但仅显示第二个表的第一个结果

javascript - 从JavascriptMVC中的静态方法获取静态属性的值

CakePHP 在应用程序的 Controller 中调用插件模型

cakephp - 列出 Cakephp 3 中的所有 Controller / Action

.htaccess - CakePHP 和 .htaccess 资源缓存

php - 从 Symfony 进程执行 python 失败

php - 如何在 laravel api 中使用分页?

php - 用于 mod_php 或 PHP 的 Apache2 API(或其他网络服务器)

php - 需要在 PHP 中使用命名空间的动态类

php - 如何为 php mvc 构建一个好的路由器