Validating array of inputs in a form Yii2

Hi, I have been developing a system to create a dynamic questioner, where an organizer can create questions for a user to respond, but I have been having trouble validating the answers of the users to the questioners. I have three types of inputs available for the organizer to create, a short answer, a long answer and an input field. I tried using the Each validation rule, but it doesn’t seem to be working. I search all around for an answer to this, but I didnt find anything that worked.
Here is my code.

View

<?php $form = ActiveForm::begin([ 'id' => 'respuesta-form', 'enableAjaxValidation' => true, 'options' => ['enctype' => 'multipart/form-data'], ]); ?>
<?php foreach ($preguntas as $i => $pregunta): ?>

<?php if($pregunta->tipo == 1): ?>
    <?= $form->field($model, "respuesta[$i]")->textInput(['maxlength' => true])->label("<strong>" . $pregunta->descripcion . "</strong>")  ?>
<?php endif; ?>

    <?php if($pregunta->tipo == 2): ?>
        <?= $form->field($model, "respuesta[$i]")->textarea(['maxlength' => true], ["style" => "resize: none;"])->label("<strong>" . $pregunta->descripcion . "</strong>")  ?>
    <?php endif; ?>

    <?php if($pregunta->tipo == 3): ?>
        <?= $form->field($model, "respuesta[$i]")->fileInput()->label("<strong>" . $pregunta->descripcion . "</strong>") ?>
    <?php endif; ?>

<?php endforeach; ?>

<div class="form-group">
    <?= Html::submitButton('Guardar', ['class' => 'btn btn-success']) ?>
</div>

<?php ActiveForm::end(); ?>

Model

        public function rules()
{
    return [
        [['idpregunta', 'idinscripcion'], 'required'],
        ['respuesta', 'each', 'rule' => ['required']],
        [['idpregunta', 'idinscripcion'], 'integer'],
        [['respuesta'], 'string', 'max' => 500],
        [['idpregunta'], 'exist', 'skipOnError' => true, 'targetClass' => Pregunta::className(), 'targetAttribute' => ['idpregunta' => 'id']],
        [['idinscripcion'], 'exist', 'skipOnError' => true, 'targetClass' => Inscripcion::className(), 'targetAttribute' => ['idinscripcion' => 'idInscripcion']],
    ];
}

Controller

    public function actionResponderFormulario($slug){

    $evento = $this->findModel("", $slug);
    $inscripcion = Inscripcion::find()->where(["idEvento" => $evento->idEvento, "idUsuario" => Yii::$app->user->identity->idUsuario])->one();
    $preguntas = Pregunta::find()->where(["idevento" => $evento->idEvento])->all();

    $model = new Pregunta();

    if($inscripcion ==null){
        $preguntas = Pregunta::find()->where(["idevento" => $evento->idEvento])->all();
        return $this->render('responderFormulario',
            ["preguntas" => $preguntas,
                "eventos" => $evento,
                "model" => $model]);
    }
}

The most important thing for me is for the questions to validate in general, I don’t care that much to validate each type separately, because I may remove this later.
Thank you in advance.

You can use a custom function to validate input here is an example that I use;

public function spam()
  {
    foreach (Yii::$app->params['spamEmails'] as $spam) {
        if (strpos($this->email, $spam)) {
            $this->addError('email', "Invalid email");
        }
    }

 }

/**
 * {@inheritdoc}
 */
public function rules()
{
    return [
        ['email', 'spam'], 
    ];
}