当我在Yii2中的CRUD生成器中添加“搜索模型类”时,框架创建了搜索类(ArticlesSearch),它扩展了控制器类(文章) - 搜索功能在单独的类中(在ArticlesSearch中)。为什么yii不向控制器添加搜索功能(文章)?
答案 0 :(得分:0)
Gii生成的ArticlesSearch
类应 NOT 扩展控制器类。它应扩展您的文章模型( app \ models \ Article ),如果使用数据库,则扩展 \ yii \ db \ ActiveRecord 。
Yii不希望所有的逻辑都在控制器上处理。您的文章模型类可以在应用程序内的任何位置使用,包括其他模型控制器,cron任务或控制台脚本。因此,有一个名为Article的模型类来定义和处理所有验证,与其他模型的关系以及与DB的交互,然后构建一个扩展它的Search类是正确的&灵活的解决方案。
如果您需要搜索仅与控制器绑定,那么您不需要构建任何搜索类,只需构建和处理控制器内的ActiveDataProvider
实例。