修改现有的crud scaffolded模型的工作流程,视图和控制器

时间:2013-04-27 11:14:39

标签: yii workflow

我正在学习Yii框架。我以前总是在wordpress中构建插件,之前从未使用过PHP MVC框架。

  • 假设我设计了数据库
  • 使用Yiic shell - 控制台对数据库进行建模并创建crud类等。
  • 将控制器和视图修改为我的自定义要求。

现在客户端需求发生变化,数据库中需要一个额外的字段。

  • 我修改数据库,例如将“tel2”字段添加到customer表。

我是否需要手动更新模型,视图和控制器以合并这些更改,或者我是否保存自定义,然后让Yiic shell重新构建模型,查看&控制器,然后手动重新编写自定义?

我相信我也可以做到,但是有一种更简单的方式/你是否有一种方式可以使你的生活更轻松?

2 个答案:

答案 0 :(得分:5)

当我开始Yii时,这也是我的一个问题。

简单的答案是你不必改变一切。 Gii模块是Yii的一个非常强大的功能,在使用DB表之后制作CRUD和模型之后,如果您有自己的自定义函数和方法,那么您决定需要更改表并添加新列它,您需要在gii中重新制作模型,它应在单独的链接中显示修改后的代码,标记为“ diff ”。

Gii只生成代码,但不会覆盖它。

现在你需要做的就是打开“diff”,确保你不会覆盖代码,因为也会有覆盖按钮。签出“diff”代码后,它将显示新列和突出显示的新属性,现在您需要做的就是将必要的已更改代码复制到原始代码中。

这样,您可以根据需要进行任意数量的更改,而所有内容都保持不变。

还有另一种方法。您可以使用基类并将所有代码扩展到另一个文件中。这样,您需要做的就是更改基本模型,所有内容仍然保持不变。

dii image

我认为这应该回答了你的问题。

此致

答案 1 :(得分:1)

您应该将gii视为一种可以让您快速入门的工具。但是一旦你创建了你的模型,也许你的CRUD,你通常可以忘记它。您的项目代码不断发展 - 如果它不是一个非常简单的项目 - 您无论如何都会对自动生成的代码进行大量的手动更改。

因此,每次触摸数据库时,都会更新相关文件。通常,这只涉及在模型中的rules()中添加新的属性规则,并在表单视图中添加另一个输入字段。