获取错误"在非对象上调用成员函数formName()"

时间:2016-09-16 11:37:01

标签: php yii2

我在尝试从表格输入中获取数据时遇到错误(在非对象上调用成员函数formName())。这是我的代码 -

查看代码:

$arr = array("config", "specs");
foreach($arr as $index=>$value){
    echo '<h3>' . $value . '</h3>';
    for($i=0; $i<3; $i++){
    echo '<div class="text-row">';
        echo $form->field($configmodel, "[$index]config[$i]")->label(false);
        echo '<p class="invisible"></p>';
    echo '</div>';
    }
}

控制器代码:

$configmodel = new ConfigForm();
$configmodels = [new ConfigForm()];
for($i = 1; $i < 3; $i++) {
    $configmodels[] = new ConfigForm();
}

if($configmodel->load(Yii::$app->request->post())) {
    if(Model::loadMultiple($configmodels, Yii::$app->request->post()) &&  Model::validateMultiple($configmodels)){
        return $this->render('result', [
            'configmodels' => $configmodels
        ]);
    }

} else {
    return $this->render('index', [
        'configmodel' => $configmodel
    ]);
}

型号代码:

class ConfigForm extends Model
{
    public $config = [];

    public function rules()
    {
        return [
            ['config', 'required'],
            ['config', 'each', 'rule' => ['string', 'min' => 20]
        ];
    }
}

1 个答案:

答案 0 :(得分:1)

您正在将模型而不是数组传递到loadMultiple。从指南:

  

$ models:array:要填充的模型。请注意,所有模型都应具有相同的类。

validateMultiple同样如此。

由于您需要3个模型,因此可以创建以下数组:

$configModels = [new ConfigForm(), new ConfigForm(), new ConfigForm()];
...
if (Model::loadMultiple($configModels, Yii::$app->request->post()) &&  Model::validateMultiple($configModels)  ...