有一个通过向导创建服务运行时模型的模型
class ServiceTimeCreate extends Model
{
public $service_id;
public $time;
public $master_id;
/**
* @inheritdoc
*/
public function rules()
{
return [
['service_id', 'each', 'rule' => ['required','message' => 'Не удалось определить идентификатор услуги']],
['master_id', 'required', 'message' => 'Не удалось определить идентификатор мастера'],
['time', 'each', 'rule' => ['required', 'message' => 'Поле с временем не заполнено']],
['time', 'each', 'rule' => ['time', 'format' => 'php:H:i', 'message' => 'Неверный формат времени']],
[['master_id','service_id'], 'unique', 'targetClass' => '\app\models\ServiceTime', 'message' => 'Упс, Данная услуга уже существует :)'],
];
}
/**
* Create window.
*
* @return ServiceTimeCreate|null the saved model or null if saving fails
*/
public function create()
{
var_dump($this);
if (!$this->validate()) {
return null;
}
foreach($this->time as $key=>$serv){
if(isset($this->time[$key]) and isset($this->service_id[$key])){
$service_time = new ServiceTime();
$service_time->service_id = $this->service_id[$key];
$service_time->master_id = $this->master_id;
$service_time->time = $this->time[$key];
$trig = $service_time->save();
}
}
return $this;
}
public function findModel($id)
{
if (($model = ServiceTime::findByMaster($id)) !== null) {
return $model;
} else {
throw new NotFoundHttpException('Услуга не найдена :(');
}
}
}
在界面中显示模型
<?php foreach ($service as $ser):?><?='
<div class="form-group row">
<div class="col-sm-6 mb-3 mb-sm-0">
<div class="custom-control custom-checkbox mr-3">
'.Html::activeInput('checkbox', $modelSer, 'service_id[]', ['id'=>'service'.$ser['id'],'class'=>'custom-control-input', 'value' => $ser['id']]).'
<label class="custom-control-label" for="service'.$ser['id'].'">'.$ser['service_name'].'</label>
</div>
</div>
<div class="col-sm-6">
'.Html::activeInput('text', $modelSer, 'time[]', ['class'=>'form-control form-control-user','placeholder' => 'Время','data-mask'=>'time']).'
</div>
</div>
'?>
<?php endforeach;?>
由于可以有许多服务,因此每个服务都需要自己的时间。接下来的问题是什么,如何正确验证这个模型以及如何构建它?
目前,模型没有保存并出现验证错误。此外,当试图在数据库中人为地重新创建记录并显示其界面时,会生成输出模型与属性不匹配的错误(service_id[]
, time[]
)