Php 根据操作更改视图是否是一种不好的做法?

Php 根据操作更改视图是否是一种不好的做法?,php,model-view-controller,zend-framework,Php,Model View Controller,Zend Framework,我有一个单独的控制器,索引,它管理几个非专门的信息页面(例如主页、概述、功能等)。每个页面在控制器中都有自己的操作。根据操作的不同,将使用不同的视图脚本渲染内容 使用不同的视图脚本渲染每个动作是否是一种不好的做法?每个页面都应该有自己的控制器吗?谢谢,这根本不是坏习惯。考虑PHP应用程序常见的不同场景。用户的CRUD(创建、读取、更新、删除) 对于用户,所有操作都应该在同一个控制器上 我通常使用: 索引-显示所有用户 添加-创建新用户 编辑-编辑现有用户 删除-删除用户(没有视图,只是重定向)

我有一个单独的控制器,索引,它管理几个非专门的信息页面(例如主页、概述、功能等)。每个页面在控制器中都有自己的操作。根据操作的不同,将使用不同的视图脚本渲染内容


使用不同的视图脚本渲染每个动作是否是一种不好的做法?每个页面都应该有自己的控制器吗?谢谢,

这根本不是坏习惯。考虑PHP应用程序常见的不同场景。用户的CRUD(创建、读取、更新、删除)

对于用户,所有操作都应该在同一个控制器上

我通常使用:

  • 索引-显示所有用户
  • 添加-创建新用户
  • 编辑-编辑现有用户
  • 删除-删除用户(没有视图,只是重定向)

如果合适,add和edit可以使用相同的视图,但是add/edit不可能与index共享相同的视图。

您所描述的实际上是Zend Framework MVC实现的标准最佳实践。这就是Zend Framework“希望”您这样做的方式!你为什么担心这可能是一个坏习惯

你的第二种提问方式

每个页面都应该有自己的控制器吗

不,但不要从页面的方向开始思考,而是从功能单元的角度思考。例如,如果您的页面需要用户管理,您很可能会有一个
用户控制器

该控制器需要实现哪些功能

  • 添加用户
  • 删除用户
  • 让用户编辑他们的数据
  • 让用户选择朋友
  • 等等
因此,这些函数中的每一个都成为userController中的一个动作(function=method=action)


这样,您也将自动拥有易于阅读的URL。最后,每个操作都有一个.phtml视图脚本,其中包含该操作所需的标记。

请阅读
Zend_Layout
Zend_view_Helpers
,如果您害怕的话,您几乎不必在多个视图文件上复制内容。谢谢,这非常有意义。我只是担心这样构造我的应用程序会让自己失败。