Dynamic form input fields in CakePHP 자습서를 확인하십시오. 나는 CakePHP 2.x와 CakePHP 3.x에서도 같은 것을 사용했다. 이 자습서의 한 가지 문제점은 동적 필드 ID 생성입니다. Grade.0.subject
및 Grade.1.subject
필드 모두에 대해 GradeSubject
만들기와 같이 동일한 동적 필드에 대해 동일한 ID를 만들 때마다 각 필드에 동적 ID가 필요한 경우 아래 에서처럼이 자습서를 수정할 수 있습니다.
은 튜토리얼에 따르면 마찬가지로 View/Elements/grades.ctp
내용 변경 :
<?php
$key = isset($key) ? $key : '{{ key }}';
// I changed <%= key %> to {{ key }}
?>
<tr>
<td>
<?php echo $this->Form->hidden("Grade.{$key}.id") ?>
<?php echo $this->Form->text("Grade.{$key}.subject",array("id"=>"Grade{$key}Subject")); ?>
</td>
<td>
<?php echo $this->Form->select("Grade.{$key}.grade", array(
'A+',
'A',
'B+',
'B',
'C+',
'C',
'D',
'E',
'F'
), array(
'empty' => '-- Select grade --',
"id"=>"Grade{$key}Grade"
)); ?>
</td>
<td class="actions">
<a href="#" class="remove">Remove grade</a>
</td>
</tr>
을하고 또한 add.ctp
자바 스크립트 코드를 변경 :
<script>
$(document).ready(function() {
//I changed undescore default template settings
_.templateSettings = {
interpolate: /\{\{(.+?)\}\}/g
}
var
gradeTable = $('#grade-table'),
gradeBody = gradeTable.find('tbody'),
gradeTemplate = _.template($('#grade-template').remove().text()),
numberRows = gradeTable.find('tbody > tr').length;
gradeTable
.on('click', 'a.add', function(e) {
e.preventDefault();
$(gradeTemplate({key: numberRows++}))
.hide()
.appendTo(gradeBody)
.fadeIn('fast');
})
.on('click', 'a.remove', function(e) {
e.preventDefault();
$(this)
.closest('tr')
.fadeOut('fast', function() {
$(this).remove();
});
});
if (numberRows === 0) {
gradeTable.find('a.add').click();
}
});
</script>
문제는 입력이 양식을 제출 문제의 원인이 같은 특성을 갖입니다. – user3504209
아무런 문제가 없습니다. []로 된 name 속성이 모든 값을 갖는 배열을 반환 할 것입니다. –