我在尝试从表格输入中获取数据时遇到错误(在非对象上调用成员函数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]
];
}
}
答案 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) ...