【问题标题】:Yii2 use ActiveForm for SearchYii2 使用 ActiveForm 进行搜索
【发布时间】:2016-04-12 08:38:16
【问题描述】:

昨天我遇到了 Yii2 的 ActiveForm 的问题。我正在为我的网站构建一个搜索表单,但是当我加载列出所有汽车的页面(这里是搜索表单)时,它会抛出 Call to a member function formName() on null 异常。首先,我将 DataProvider 更改为使用 $model,$dataProvider 一直返回 NULL。当我转储 $model 中返​​回的数据时,我可以看到存储在表中的所有数据。 (到现在为止还挺好) 我的目标是打印例如 UserGroups 作为搜索条件。

你怎么看,可能是什么问题?很明显,ActiveForm 没有获得任何非空的相关数据源,但正如我所写的那样,我在 $model 中获得了数据。

控制器文件:

/**
     * Aktív gépkocsik listázása
     * @return string
     */
    public function actionIndex() {
        $this->vanJogosultag(Url::current(), self::VIEW);
        $dataProvider = new ActiveDataProvider([
            'query' => Gepkocsi::find(),
        ]);

        $model = Gepkocsi::find()->all();

        return $this->render('lista', array('dataProvider' => $dataProvider, 'model' => $model));
}

_search.php(部分用于搜索表单)

<!-- Gépkocsi felhasználói csoport -->
        <div class="offset col-xs-8 col-xs-offset-2">
            <?= $form->field($model['rendszam'], 'rendszam')->textInput() ?>
        </div>

查看我在列表视图中包含部分内容的文件

<?= $this->render('_search', [
        'model' => $model
    ]); ?>

感谢您的回答!祝你有美好的一天!

加博尔

【问题讨论】:

    标签: php activerecord yii2 active-form


    【解决方案1】:

    为什么不更改数据提供者查询以像模型一样搜索所有项目?

    $dataProvider = new ActiveDataProvider([
        'query' => Gepkocsi::find()->all(),
    ]);
    

    【讨论】:

    • 这是因为我在同一页面上使用了一个 DetailView 小部件,而这个小部件等待这种结果。我尝试过,但它不起作用,抛出此错误:“查询”属性必须是实现 QueryInterface 的类的实例,例如yii\db\Query 或其子类。
    【解决方案2】:

    好的,我找到了解决问题的方法。这完全是我的错。解决方案是简单地创建一个 Gepkocsi 模型的新实例并将其传递给部分,然后它就可以工作了。感谢您的回答和努力!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多