2

我开始使用 Yii 框架和 gii 工具来为几个表创建 crud 功能。

问题是我通常需要修改生成的代码。例如,我注意到所有表单都只使用文本输入。例如,在外键的情况下,我需要显示一个选择,用户可以在其中选择另一个表的寄存器,而无需插入主键。

我实现了修改所涉及的视图(_view.php,_form.php,...)。当需要修改数据库并重新生成代码时,我的问题就开始了。对于这种情况,我将不得不逐表逐个更新相关文件,并保留我的旧更改。

有没有办法更好地处理这种情况?

4

4 回答 4

2

GiiX扩展为关系生成下拉列表。

如果您使用 Gii 模型生成,GiiX 也会生成更好的模型。

于 2012-05-30T15:47:32.843 回答
1

如果您需要多次生成 crud 表单的功能,可以选择将外键显示为下拉列表,您可以创建自己的 gii 模板来为您完成。查看指南以了解如何操作。

于 2012-05-30T09:43:10.367 回答
1

你不必那样做。例如,您可以使用外键生成选择。

<?php echo CHtml::dropDownList('ModelName[language_id]',$model->language_id,CHtml::listData(Language::model()->findAll(), 'id', 'name'), array('prompt'=>'Select Language')); ?>

第一个参数是选择的名称,第二个是值(如果您正在更新,将选择该值),第三个是数据,第四个是带有 html 选项的数组。有关CHtml::dropDownListCHtml::listData的更多信息。

在这个,language_id是外键,在Language表中你有一个id和一个name字段。这将生成一个包含所有可用语言的选择,例如:1=> 英语、2=> 德语等。

于 2012-05-30T08:53:04.957 回答
0

对于此功能,您需要开发 gii 工具,该工具将继承现有 gii 工具的功能,这意味着在创建 CRUD 时对现有类进行一些修改。这是您的特定要求,gii 工具仅提供适合所有用户的通用功能。

于 2012-05-30T09:52:40.103 回答