首页 > 解决方案 > 在 symfony 中添加 CollectionType 表单时如何保持 Javascript 功能

问题描述

我用symfony制作了一个带有CollectionType字段的表单,为两个相关实体添加嵌入式表单。

一切正常,但嵌入表单中的某些字段是dateType字段,我想在选择它们时使用datepicker javascript 调用。

完成所有工作后,我发现datepicker 弹出窗口不起作用,因为表单是通过 javascript 加载的。但是,我该怎么做才能让他们工作呢?

注意:我没有编写任何代码,因为我遵循了 symfony.com 文档提出的标准程序。但很乐意应要求将其张贴在这里。

标签: javascriptformssymfony

解决方案


您需要在 javascript 代码中初始化新的日期输入字段(在其中向集合添加新行)。这是一个示例,因为您没有发布任何代码。

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));
    });
}

推荐阅读