過去に似たようなことを扱ったことがあります。思いつくオプションがいくつかあります。
ボタンをクリックするだけで新しいフィールドを生成する JS コードがあるので、その JS 関数を展開して、いくつかのパラメーターを渡して呼び出すこともできます。パラメータがある場合は、フィールドに既存のデータが入力されます。
次に、エラーが原因で、または PHP からの編集のためにフォームが再表示されている場合は、ページがロードされたときにフィールドを作成してデータを入力できるように、JavaScript に情報を渡します。
説明のために、次のようなものがあるとします。
<a href="#" onclick="addNewFormField(); return false">Add Another Child</a>
そして、あなたは機能を持っています:
function addNewFormField() {
// create new HTML element to contain the field
// create new input, append to element container
// add container to DOM
}
次のように変更します。
function addNewFormField(data) {
// create new HTML element to contain the field
// create new input, append to element container
// add container to DOM
if (data != undefined) {
newFormElement.value = data.value;
newContainerElement.class = 'error';
}
}
PHP から、onload を実行するコードを追加します。
<script type="text/javascript">
window.onload = function() { // replace me with jQuery ready() or something proper
<?php foreach($childInList as $child): ?>
addNewFormField({ value: '<?php echo $child['name'] ?>' });
<?php endforeach; ?>
}
</script>
フォームがどのように機能するかを正確に理解していない高レベルの例ですが、過去に同様の方法を使用して、JS で作成されたフィールドにサーバー側からのデータを再入力しました。
編集: 使用できる別の方法は、PHP 側で HTML 要素を作成し、そこから事前入力することですが、コードの重複、JS からの HTML 生成、および PHP からの同じものの HTML 生成が発生する可能性があります。JS 側が PHP によって追加された最初のフィールドを認識できるほどスマートである限り、実装が最も簡単なものを使用できます。個人的には、上記のようにオプションのデータを処理するように JS コードを拡張するだけです。