詳細を追加するような単一のフォームで、クラス(つまりテーブル)の複数の参照を含むフォームがあります。タスクの主な目標は、複数のユーザーを持つ会社です。各ユーザーには、いくつかのアクセス制限があります。そのため、会社を追加するときに、複数の会社ユーザーを追加します。会社のユーザーフォームには、そのアクセスラジオボタンがあります。ここでラジオボタンの検証が機能していません。チェックボックスとドロップダウンについても同じ問題があります。以下のサンプルコード。助けてください。
AccessController.php
class AccessController extends Controller
{
public function actionCreate() {
$formDetails = Yii::$app->request->post('ClientAllowAccess', []);
if(!empty($formDetails)){
foreach ($formDetails as $i => $formDetail) {
$modelDetail = new ClientAllowAccess(['scenario' => ClientAllowAccess::SCENARIO_BATCH_UPDATE]);
$modelDetail->setAttributes($formDetail);
$modelClientAccess[] = $modelDetail;
}
} else {
$modelClientAccess[] = new ClientAllowAccess(['scenario' => ClientAllowAccess::SCENARIO_BATCH_UPDATE]);
}
return $this->render('create', [
'client_allow_access_multiple' => $modelClientAccess
]);
}
}
create.php
....
<?php foreach($client_allow_access_multiple as $i => $client_allow_acces): ?>
<?= $form->field($client_allow_access, '[$i]access_type')->radioList([1 => 'Allow access', 2 => 'Can\'t allow access'],[ 'item' => function($index, $label, $name, $checked, $value) {
$return = '<label class="modal-radio">';
$return .= '<input type="radio" name="' . $name . '" value="' . $value . '" id="custom_id_value_'.$index.'" >';
$return .= '<span> ' . ucwords($label) . '</span>';
$return .= '</label>';
return $return;
}]); ?>
<?php endforeach; ?>
....
レンダリング ビュー
<div class="form-group field-clientcontactdetails-0-gender has-success">
<label class="control-label" for="clientcontactdetails-0-gender">Gender</label>
<select id="clientcontactdetails-0-gender" class="form-control" name="ClientContactDetails[0][gender]">
<option value="">---</option>
<option value="1">Male</option>
<option value="2">Female</option>
<option value="3">Others</option>
</select>
<div class="help-block"></div>
</div>
<div class="form-group field-clientallowaccess-0-access_type required">
<label class="control-label" for="clientallowaccess-0-access_type">Access Type</label>
<input type="hidden" name="ClientAllowAccess[0][access_type]" value=""><div id="clientallowaccess-0-access_type"><label><input type="radio" name="ClientAllowAccess[0][access_type]" value="1"> Allow access</label>
<label><input type="radio" name="ClientAllowAccess[0][access_type]" value="2"> Can't allow access</label></div>
<div class="help-block"></div>
</div>