在 symfony 中添加 CollectionType 表单时如何维护 Javascript 功能
How to mantain Javascript functionality when adding CollectionType forms in symfony
我用 symfony 和 CollectionType 字段制作了一个 form,以添加嵌入式两个相关实体的表单。
一切正常,但嵌入表单中的某些字段是 dateType 字段,我想使用 datepicker javascript我select他们的时候打电话。
完成所有工作后,我发现 日期选择器弹出窗口 不起作用,这是有道理的,因为表单已通过 javascript 加载。 但是,我该怎么做才能让它们正常工作?
NOTE: I do not write any code, since I have followed the standard
procedure proposed by symfony.com documentation. But will be happy to
post it here on request.
您需要在 javascript 代码中初始化新的日期输入字段(在其中向集合添加新行)。这是一个示例,因为您没有 post 任何代码。
function addFormToCollection($collectionHolderClass) {
var $collectionHolder = $('.' + $collectionHolderClass);
var prototype = $collectionHolder.data('prototype');
var index = $collectionHolder.data('index');
var newForm = prototype;
newForm = newForm.replace(/__name__/g, index);
$collectionHolder.data('index', index + 1);
var $newFormLi = $('<li></li>').append(newForm);
$collectionHolder.append($newFormLi);
// initialize new DateTime fields
var $newRow = $collectionHolder..children().last();
$newRow.children('.dateTime').each(function(){
initializeDatePicker($(this));
});
}
我用 symfony 和 CollectionType 字段制作了一个 form,以添加嵌入式两个相关实体的表单。
一切正常,但嵌入表单中的某些字段是 dateType 字段,我想使用 datepicker javascript我select他们的时候打电话。
完成所有工作后,我发现 日期选择器弹出窗口 不起作用,这是有道理的,因为表单已通过 javascript 加载。 但是,我该怎么做才能让它们正常工作?
NOTE: I do not write any code, since I have followed the standard procedure proposed by symfony.com documentation. But will be happy to post it here on request.
您需要在 javascript 代码中初始化新的日期输入字段(在其中向集合添加新行)。这是一个示例,因为您没有 post 任何代码。
function addFormToCollection($collectionHolderClass) {
var $collectionHolder = $('.' + $collectionHolderClass);
var prototype = $collectionHolder.data('prototype');
var index = $collectionHolder.data('index');
var newForm = prototype;
newForm = newForm.replace(/__name__/g, index);
$collectionHolder.data('index', index + 1);
var $newFormLi = $('<li></li>').append(newForm);
$collectionHolder.append($newFormLi);
// initialize new DateTime fields
var $newRow = $collectionHolder..children().last();
$newRow.children('.dateTime').each(function(){
initializeDatePicker($(this));
});
}