Это то, что я хотел бы сделать с jQuery.По сути, все, что вам нужно сделать, это использовать jQuery для динамического добавления дополнительных входных данных в соглашениях CakePHP: Step.0.user_id
, например.Что вам нужно сделать сейчас на +1: вам нужно посчитать ноль, чтобы вы получили Step.1.user_id
и т. Д.
Первый вариант: используйте для этого jQuery-Script
var count = 1;
$('#add_step').click(function() {
var new_form = $('.Step').eq(0).clone();
$('input, textarea, select, radio', new_form).filter('[name^="data"]').each(function() {
var name = $(this).attr('name');
var new_name = name.replace(/\[\d*\]/, '['+count+']');
$(this).attr('name', new_name).attr('value', '');
});
$('#YourForm').after(new_form);
count+;
return false;
});
В этом случае вы клонируете div с классом step
, который содержит ваши входные данные для модели Step
.Затем вы заменяете атрибут name, чтобы заменить нули на новое значение переменной count
.count++
позволяет добавлять столько шагов, сколько вы хотите.
Это решение только для jQuery и может потребовать дополнительной работы для вашей среды.
Второй вариант: использовать AJAX сэлемент
Вы также можете написать в вашем StepsController
функцию, которая отображает элемент, который содержит вашу форму и заботится о счетчике.
Третий вариант: ИспользоватьURL-параметр, чтобы определить, сколько опций вы хотите
Если у вас есть URL-адрес, такой как /qnote/add/3
, вы можете использовать 3 в качестве параметра в цикле for для итерации этих входных данных формы.Вы должны позаботиться о том, чтобы в конечном итоге уже введенные значения отправлялись вместе с формой при добавлении еще одного шага, чтобы они не потерялись.
Надеюсь, это поможет встать на правильный путь.