You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii GridView筛选功能失效求助:学生关联Hour数据无法筛选

解决Yii GridView中instructor_id和type下拉筛选失效的问题

我来帮你排查并解决这个问题,从代码来看,主要有几个关键问题导致筛选功能失效,咱们一步步来修复:

1. 视图中Hour模型初始化未加载筛选参数

你当前在视图里直接new Hour()然后设置属性,但没有处理用户提交的筛选参数(也就是$_GET['Hour']里的值),导致instructor_id和type的筛选值无法传递到search()方法中。

修改视图里的Hour模型初始化代码:

<?php
// 使用search场景,确保模型允许批量赋值筛选参数
$hour = new Hour('search');
// 加载GET中的筛选参数
if(isset($_GET['Hour'])) {
    $hour->attributes = $_GET['Hour'];
}
// 强制绑定当前学生ID,确保只显示该学生的Hour数据
$hour->student_id = $model->id;
// 设置时间范围(如果$startDate和$endDate是预先定义的)
$hour->time_start = $startDate;
$hour->time_end = $endDate;
?>

2. Hour模型search()方法的拼写错误与逻辑问题

你的search()方法里有个明显的笔误:$_GET['time_strat']应该是$_GET['time_start'],而且直接读取$_GET参数的方式不够规范(应该用模型属性),同时时间范围的处理可以更严谨。

修改search()方法中的时间条件部分:

// 替换原来的时间筛选逻辑
if ($this->time_start && $this->time_end) {
    // 转换为数据库兼容的时间范围,确保包含当天的所有时间
    $startTime = date('Y-m-d 00:00:00', strtotime($this->time_start));
    $endTime = date('Y-m-d 23:59:59', strtotime($this->time_end));
    // 使用命名参数避免SQL注入,同时更清晰
    $criteria->addCondition('t.time_start >= :startTime');
    $criteria->addCondition('t.time_end <= :endTime');
    $criteria->params[':startTime'] = $startTime;
    $criteria->params[':endTime'] = $endTime;
} else {
    $criteria->compare('t.time_start', $this->time_start, true);
    $criteria->compare('t.time_end', $this->time_end, true);
}

3. 确保Hour模型的安全规则包含筛选属性

检查你的Hour模型rules()方法,必须确保instructor_id、type等用于筛选的属性在search场景下被标记为安全,这样才能被批量赋值:

public function rules() {
    return array(
        // 其他验证规则...
        // 允许这些属性在search场景下被批量赋值
        array('instructor_id, type, student_id, time_start, time_end', 'safe', 'on'=>'search'),
    );
}

4. 验证GridView的filter配置

你当前的GridView中instructor_id和type的filter配置是正确的,但可以再确认两点:

  • Instructor::model()->findAll()是否能正确返回所有讲师数据(如果数据为空,下拉框会显示异常)
  • Hour::$type_labels是否是正确的键值对数组(比如array('training'=>'培训', 'practice'=>'练习')这样的格式)

做完这些修改后,你应该就能正常使用instructor_id和type的下拉筛选功能了。

内容的提问来源于stack exchange,提问作者Hódos Gábor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:00:24