У меня есть эта форма с 14 флажками, некоторые из них могут быть проверены, и пользователь может снять их при необходимости.Проверено и непроверено значение флажка передано в контроллер
<?php $form = ActiveForm::begin(); ?>
<h3>New Courses</h3>
<?= GridView::widget([
'dataProvider' => $ns_dataProvider,
'summary' => "{totalCount} courses",
'columns' => [
[
'label'=>'Register',
'format' => 'raw',
'value'=>function ($data) use($student, $active_session_semester) {
// return Html::a(Html::encode("Register"),'site/index');
$studentsubject = \app\models\Studentsubject::find()->where([
'student_id' => $student->id,
'subject_id' => $data->id,
'level_id' => $student->current_level_id,
'session_semester_id' => $active_session_semester->id,
])->all();
$countstudentsubject = count($studentsubject);
if ($countstudentsubject > 0) {
return Html::checkbox('subject_id[]',true,['uncheck'=>"r".$data->id,'value'=>$data->id]);}
else {
return Html::checkbox('subject_id[]', false, ['uncheck'=>"r".$data->id,'value' => $data->id]);
}
},
],
'subject_title',
],
]); ?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
Я извлекаться значение флажка, как этот
if (Yii::$app->request->post()) {
$x = Yii::$app->request->Post();
$subject_ids = $x['subject_id'];
var_dump($subject_ids);
}
Однако я получаю это как массив с 16 возвращаемые значения вместо 14:
array (size=16)
0 => string 'r273' (length=4)
1 => string '273' (length=3)
2 => string 'r274' (length=4)
3 => string '274' (length=3)
4 => string 'r275' (length=4)
5 => string 'r295' (length=4)
6 => string 'r296' (length=4)
7 => string 'r297' (length=4)
8 => string 'r423' (length=4)
9 => string 'r424' (length=4)
10 => string 'r425' (length=4)
11 => string 'r590' (length=4)
12 => string 'r591' (length=4)
13 => string 'r592' (length=4)
14 => string 'r593' (length=4)
15 => string 'r594' (length=4)
Когда я проверить флажок , отправляются как проверенные, так и непроверенные значения. Я что-то упускаю? Является довольно новым для yii2. Любые советы, предложения и решения будут высоко оценены.
В моей форме только 14 флажков. Массив [0] и массив [1] исходят из одного флажка. и Array [2], а массив [3] исходит из второго флажка. поэтому число массивов равно 16 не 14 – Jen
Я хочу отправить проверенное значение, если флажок установлен, и снимите флажок, если это не так. Любая идея, как я могу это сделать в yii? – Jen
Вы просто не можете. HTTP POST (метод, используемый для подпрограммы foirm) обеспечивает полное представление всех данных в модели. и для флажка это означает все его значения. Перед сохранением данных вы должны управлять данными, представленными в контроллере. – scaisEdge