【发布时间】:2016-02-09 01:57:12
【问题描述】:
当我在 Yii2 的 CRUD 生成器中添加“搜索模型类”时,框架会创建扩展控制器类 (Articles) 的搜索类 (ArticlesSearch) - 搜索功能在单独的类中(在 ArticlesSearch 中)。为什么yii没有给控制器添加搜索功能(文章)?
【问题讨论】:
当我在 Yii2 的 CRUD 生成器中添加“搜索模型类”时,框架会创建扩展控制器类 (Articles) 的搜索类 (ArticlesSearch) - 搜索功能在单独的类中(在 ArticlesSearch 中)。为什么yii没有给控制器添加搜索功能(文章)?
【问题讨论】:
Gii 生成的ArticlesSearch 类应该不扩展控制器类。它应该扩展您的文章 model (app\models\Article),如果使用 DB,它会扩展 \yii\db\ActiveRecord。
Yii 不会期望您的所有逻辑都在控制器上处理。您的文章模型类可以在您的应用程序内的任何地方使用,包括其他模型控制器、cron 任务或控制台脚本。因此,拥有一个名为 Article 的模型类来定义和处理所有验证、与其他模型的关系以及与 DB 的交互,然后构建一个扩展它的 Search 类是一个正确且灵活的解决方案。
如果您只需要将搜索绑定到控制器,则无需构建任何搜索类,只需在控制器中构建和处理 ActiveDataProvider 实例即可。
【讨论】: