Как провалидировать динамически загруженные радиолисты? Т.е. не определенное количество, которое зависит от количества записей в бд.
Вроде-бы, что-то сделал, но валидация не проходит + radioList'ы работают словно он 1 большой ... тоесть чекнутый итем перебегает с одного radioList на другой
models/TestForm.php<?php
namespace frontend\models;
use yii\base\Model;
class TestForm extends Model
{
public $radioButtonList = [];
public function rules()
{
return [
['radioButtonList', 'each', 'rule' => ['required']],
];
}
}
controllers/TestControllerpublic function actionView($test_id)
{
...
$testForm = new TestForm();
if ($testForm->load(Yii::$app->request->post())) {
if ($testForm->validate()) {
var_dump($testForm);
}
else {
return 0;
}
}
...
return $this->render('view', [
...
'testForm' => $testForm,
...
]);
}
views/test/view<?php
/* @var $this yii\web\View */
/* @var $model common\models\Test */
/* @var $dataProvider yii\data\ActiveDataProvider */
use common\models\Answer;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<h1><?= Html::encode($this->title) ?></h1>
<div class="test-view">
<?php $form = ActiveForm::begin(); ?>
<? for ($i = 0; $i < count($testQuestions); $i++) : ?>
<section class="question-<? echo $i+1 ?>">
<h3><? echo $testQuestions[$i]->question; ?></h3>
<?=
$form->field($testForm, 'radioButtonList')
->radioList(ArrayHelper::map(
Answer::find()->where(['question_id' => $testQuestions[$i]->id])->all(),
'id',
'value'
));
?>
</section>
<? endfor; ?>
<div class="form-group">
<?= Html::submitButton('Закончить тест', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>