Good evening
This is the code I use to validate the checkbox records, I also put the complete code on how to put them to work with register and update
Create
public function actionCreate() {
$model = new Accidentes();
$sublistas = new Sublistas();
$mecanismo = [];
$parte_afectada = [];
$tipo_lesion = [];
$agentes = [];
if ($model->load(Yii::$app->request->post())) {
$model->documento = UploadedFile::getInstances($model, 'documento');
$model->estado = "1";
$mecanismo = Yii::$app->request->post('mecanismo');
$parte_afectada = Yii::$app->request->post('afectacion');
$agentes = Yii::$app->request->post('agentes');
$tipo_lesion = Yii::$app->request->post('tipo_lesion');
if (empty(Yii::$app->request->post('mecanismo'))) {
Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
} else
if (empty(Yii::$app->request->post('tipo_lesion'))) {
Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
} else
if (empty(Yii::$app->request->post('afectacion'))) {
Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
} else
if (empty(Yii::$app->request->post('agentes'))) {
Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
} else
if ($model->save()) {
$modellogs = new Logs();
$modellogs->id_update = $model->id;
$modellogs->tabla = $model->tableName();
$modellogs->usuario = Yii::$app->user->identity->user_id;
$modellogs->descripcion = "Creación " . " " . "ID " . $model->id . " " . $model->descripcion;
$modellogs->accion = "create";
$modellogs->save();
foreach (Yii::$app->request->post('afectacion') as $key => $parte_afectada) {
$modelafectacion = new Afectacion();
$modelafectacion->accidente = $model->id;
$modelafectacion->parte_afectada = $parte_afectada;
$modelafectacion->habilitado = "1";
if (!$modelafectacion->save()) {
print_r($modelafectacion->errors);
}
}
foreach (Yii::$app->request->post('mecanismo') as $key => $mecanismos) {
$modelmecanismos = new Mecanismos();
$modelmecanismos->accidente = $model->id;
$modelmecanismos->mecanismo = $mecanismos;
$modelmecanismos->habilitado = "1";
if (!$modelmecanismos->save()) {
print_r($modelmecanismos->errors);
}
}
foreach (Yii::$app->request->post('tipo_lesion') as $key => $tipo_lesion) {
$modeltipo_lesion = new TipoLesion();
$modeltipo_lesion->accidente = $model->id;
$modeltipo_lesion->tipo_lesion = $tipo_lesion;
$modeltipo_lesion->habilitado = "1";
if (!$modeltipo_lesion->save()) {
print_r($modeltipo_lesion->errors);
}
}
foreach (Yii::$app->request->post('agentes') as $key => $agentes) {
$modelagentes = new Agente();
$modelagentes->accidente = $model->id;
$modelagentes->agente = $agentes;
$modelagentes->habilitado = "1";
if (!$modelagentes->save()) {
print_r($modelagentes->errors);
}
}
if (!file_exists(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id)) {
mkdir(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id, 0777, true);
}
if ($model->documento && $model->validate()) {
foreach ($model->documento as $documento) {
$documento->saveAs(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/' . $documento->baseName . '.' . $documento->extension);
}
}
return $this->redirect(['update', 'id' => $model->id]);
} else {
//print_r($model->errors);
//print_r($modellogs->errors);
}
}
return $this->render('create', [
'model' => $model,
'sublistas' => $sublistas,
'mecanismo' => $mecanismo,
'tipo_lesion' => $tipo_lesion,
'parte_afectada' => $parte_afectada,
'agentes' => $agentes,
''
]);
}
Update
public function actionUpdate($id) {
$model = $this->findModel($id);
$sublistas = new Sublistas();
$modeltestigos = new Testigos();
$searchModel = new TestigosSearch();
$dataProvider = $searchModel->search($id);
//Mecanismo
$modelmecanismo = Mecanismos::find()->select('mecanismo')->where(['accidente' => $model->id])->andWhere(['habilitado' => '1'])->all();
$mecanismo = [];
foreach ($modelmecanismo as $key => $mecanismos) {
$mecanismo[] = $mecanismos->mecanismo;
}
//Tipo de Lesion
$modeltipo_lesion = TipoLesion::find()->select('tipo_lesion')->where(['accidente' => $model->id])->andWhere(['habilitado' => '1'])->all();
$tipo_lesion = [];
foreach ($modeltipo_lesion as $key => $lesiones) {
$tipo_lesion[] = $lesiones->tipo_lesion;
}
//Parte Afectada
$modelafectacion = Afectacion::find()->select('parte_afectada')->where(['accidente' => $model->id])->andWhere(['habilitado' => '1'])->all();
$parte_afectada = [];
foreach ($modelafectacion as $key => $afectacion) {
$parte_afectada[] = $afectacion->parte_afectada;
}
//Agente Accidente
$modelagentes = Agente::find()->select('agente')->where(['accidente' => $model->id])->andWhere(['habilitado' => '1'])->all();
$agentes = [];
foreach ($modelagentes as $key => $agente) {
$agentes[] = $agente->agente;
}
if ($modeltestigos->load(Yii::$app->request->post())) {
$modeltestigos->documento = UploadedFile::getInstances($modeltestigos, 'documento');
$modeltestigos->habilitado = "1";
$modeltestigos->accidente = $model->id;
if ($modeltestigos->save()) {
$modellogs = new Logs();
$modellogs->id_update = $modeltestigos->id;
$modellogs->tabla = $modeltestigos->tableName();
$modellogs->usuario = Yii::$app->user->identity->user_id;
$modellogs->descripcion = "Creación Testigo " . $modeltestigos->id;
$modellogs->accion = "create";
if (!$modellogs->save()) {
}
if (!file_exists(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/testigos/' . $modeltestigos->id)) {
mkdir(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/testigos/' . $modeltestigos->id, 0777, true);
}
if ($modeltestigos->documento && $modeltestigos->validate()) {
foreach ($modeltestigos->documento as $documento) {
$documento->saveAs(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/testigos/' . $modeltestigos->id . '/' . $documento->baseName . '.' . $documento->extension);
}
}
return $this->redirect(Yii::$app->request->referrer);
} else {
Yii::$app->getSession()->setFlash($modeltestigos->errors);
}
}
if ($model->load(Yii::$app->request->post())) {
$model->estado = "1";
$model->habilitado = "1";
$model->documento = UploadedFile::getInstances($model, 'documento');
if ($model->save()) {
$modellogs = new Logs();
$modellogs->id_update = $model->id;
$modellogs->tabla = $model->tableName();
$modellogs->usuario = Yii::$app->user->identity->user_id;
$modellogs->descripcion = "Actualización " . " " . $model->id . " " . $model->descripcion;
$modellogs->accion = "update";
$modellogs->save();
if (empty(Yii::$app->request->post('tipo_lesion'))) {
Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
} else
TipoLesion::updateAll(['habilitado' => "0"], "accidente = $model->id");
foreach (Yii::$app->request->post('tipo_lesion') as $key => $tipo_lesion) {
$modeltipo_lesion = TipoLesion::find()->where(['tipo_lesion' => $tipo_lesion])->one();
if (empty($modeltipo_lesion)) {
$modeltipo_lesion = new TipoLesion();
$modeltipo_lesion->accidente = $model->id;
$modeltipo_lesion->tipo_lesion = $tipo_lesion;
$modeltipo_lesion->habilitado = "1";
if (!$modeltipo_lesion->save()) {
print_r($modeltipo_lesion->errors);
}
} else {
$modeltipo_lesion->habilitado = "1";
$modeltipo_lesion->save();
}
}
if (empty(Yii::$app->request->post('afectacion'))) {
Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
} else
Afectacion::updateAll(['habilitado' => "0"], "accidente = $model->id");
foreach (Yii::$app->request->post('afectacion') as $key => $afectacion) {
$modelafectacion = Afectacion::find()->where(['parte_afectada' => $afectacion])->one();
if (empty($modelafectacion)) {
$modelafectacion = new Afectacion();
$modelafectacion->accidente = $model->id;
$modelafectacion->parte_afectada = $afectacion;
$modelafectacion->habilitado = "1";
if (!$modelafectacion->save()) {
print_r($modelafectacion->errors);
}
} else {
$modelafectacion->habilitado = "1";
$modelafectacion->save();
}
}
if (empty(Yii::$app->request->post('mecanismo'))) {
Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
} else
Mecanismos::updateAll(['habilitado' => "0"], "accidente = $model->id");
foreach (Yii::$app->request->post('mecanismo') as $key => $mecanismo) {
$modelmecanismo = Mecanismos::find()->where(['mecanismo' => $mecanismo])->one();
if (empty($modelmecanismo)) {
$modelmecanismo = new Mecanismos();
$modelmecanismo->accidente = $model->id;
$modelmecanismo->mecanismo = $mecanismo;
$modelmecanismo->habilitado = "1";
if (!$modelmecanismo->save()) {
print_r($modelmecanismo->errors);
}
} else {
$modelmecanismo->habilitado = "1";
$modelmecanismo->save();
}
}
if (empty(Yii::$app->request->post('agentes'))) {
Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
} else
Agente::updateAll(['habilitado' => "0"], "accidente = $model->id");
foreach (Yii::$app->request->post('agentes') as $key => $agentes) {
$modelagentes = Agente::find()->where(['agente' => $agentes])->one();
if (empty($modelagentes)) {
$modelagentes = new Agente();
$modelagentes->accidente = $model->id;
$modelagentes->agente = $agentes;
$modelagentes->habilitado = "1";
if (!$modelagentes->save()) {
print_r($modelagentes->errors);
}
} else {
$modelagentes->habilitado = "1";
$modelagentes->save();
}
}
if (!file_exists(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id)) {
mkdir(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id, 0777, true);
}
if ($model->documento && $model->validate()) {
foreach ($model->documento as $documento) {
if (!file_exists(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/' . $documento->baseName . '.' . $documento->extension)) {
$documento->saveAs(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/' . $documento->baseName . '.' . $documento->extension, true);
} else {
$documento->saveAs(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/' . $documento->baseName . date("_YmdHis") . '.' . $documento->extension, true);
}
}
}
//return $this->redirect(['update', 'id' => $model->id]);
}
}
return $this->render('update', [
'model' => $model,
'modeltestigos' => $modeltestigos,
'sublistas' => $sublistas,
'mecanismo' => $mecanismo,
'tipo_lesion' => $tipo_lesion,
'parte_afectada' => $parte_afectada,
'agentes' => $agentes,
'dataProvider' => $dataProvider
//'documento'=>$documento
]);
}
In the code there is also the way to generate logs for each action and file upload