{"id":19003480,"url":"https://github.com/acseo/dynamicformbundle","last_synced_at":"2025-04-22T18:13:18.396Z","repository":{"id":23235855,"uuid":"26593445","full_name":"acseo/DynamicFormBundle","owner":"acseo","description":"Symfony Form generator from array definition","archived":false,"fork":false,"pushed_at":"2025-03-04T16:27:14.000Z","size":51,"stargazers_count":5,"open_issues_count":0,"forks_count":3,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-29T17:35:42.883Z","etag":null,"topics":["bundle","forms","php","symfony","symfony-bundle"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/acseo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-11-13T15:13:56.000Z","updated_at":"2025-03-04T16:27:18.000Z","dependencies_parsed_at":"2023-10-16T19:34:35.022Z","dependency_job_id":"f3a0027d-946b-46fd-9a7a-79dd451e2e70","html_url":"https://github.com/acseo/DynamicFormBundle","commit_stats":{"total_commits":20,"total_committers":5,"mean_commits":4.0,"dds":0.7,"last_synced_commit":"1d8ff13e91e8f8488bdbf98cde81965cb8056817"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acseo%2FDynamicFormBundle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acseo%2FDynamicFormBundle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acseo%2FDynamicFormBundle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acseo%2FDynamicFormBundle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acseo","download_url":"https://codeload.github.com/acseo/DynamicFormBundle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249283072,"owners_count":21243670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bundle","forms","php","symfony","symfony-bundle"],"created_at":"2024-11-08T18:19:15.221Z","updated_at":"2025-04-16T22:32:13.346Z","avatar_url":"https://github.com/acseo.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"Getting Started With ACSEODynamicFormBundle\n==================================\n\n## Installation\n\n1. Download ACSEODynamicFormBundle using composer\n2. Enable the Bundle\n3. Controller example\n4. Create your own provider\n\n### Step 1: Download ACSEODynamicFormBundle using composer\n\nAdd ACSEODynamicFormBundle in your composer.json:\n\n```json\n{   \n    \"require\": {\n        \"acseo/dynamic-form-bundle\": \"dev-master\"\n    }\n}\n```\n\nNow tell composer to download the bundle by running the command:\n\n``` bash\n$ composer update acseo/dynamic-form-bundle\n```\n\nComposer will install the bundle to your project's `vendor/acseo` directory.\n\n### Step 2: Enable the bundle\n\nEnable the bundle in the kernel:\n\n``` php\n\u003c?php\n// app/AppKernel.php\n\npublic function registerBundles()\n{\n    $bundles = array(\n        // ...\n        new ACSEO\\Bundle\\DynamicFormBundle\\ACSEODynamicFormBundle(),\n    );\n}\n```\n\n### Step 3: Controller example\n\n``` php\n\npublic function indexAction()\n{\n    $formArray = array(\n        'name' =\u003e array(\n            'type' =\u003e 'text',\n            'options' =\u003e array(\n                'label' =\u003e 'Nom',\n                'help' =\u003e 'Renseignez votre nom',\n                'picto' =\u003e 'text',\n            ),\n            'constraints' =\u003e array(\n                'NotBlank' =\u003e true,\n                'Length' =\u003e array('min' =\u003e 2),\n            )\n        ),\n        'amount' =\u003e array(\n            'type' =\u003e 'money',\n            'options' =\u003e array(\n                'label' =\u003e 'Montant TTC',\n                'help' =\u003e 'Montant total de votre achat',\n                'picto' =\u003e 'money',\n            ),\n            'constraints' =\u003e array(\n                'NotBlank' =\u003e true\n            )\n        ),\n        'buydate' =\u003e array(\n            'type' =\u003e 'date',\n            'options' =\u003e array(\n                'label' =\u003e \"Date d'achat\",\n                'picto' =\u003e 'date',\n            ),\n            'constraints' =\u003e array(\n                'NotBlank' =\u003e true\n            )\n        ),\n        'product' =\u003e array(\n            'type' =\u003e 'text',\n            'options' =\u003e array(\n                'label' =\u003e 'Libellé produit',\n                'picto' =\u003e 'text',\n                'help' =\u003e 'lorem ipsum',\n                'data' =\u003e array(\n                    array('value' =\u003e 'Foo'),\n                    array('value' =\u003e 'Bar')\n                )\n            ),\n            'constraints' =\u003e array(\n                'NotBlank' =\u003e true\n            ),\n            'multiple' =\u003e true\n        ),\n    );\n\n    $arrayFormProvider = $this-\u003eget('acseo.form.array.provider');\n    $arrayFormProvider-\u003esetFormArray($formArray);\n\n    $form =  $this-\u003eget('acseo.form.manager')-\u003ecreateForm($arrayFormProvider);\n\n    if ($this-\u003econtainer-\u003eget('request')-\u003eisMethod('POST')) {\n        $form-\u003ehandleRequest($this-\u003econtainer-\u003eget('request'));\n\n        if ($form-\u003eisValid()) {\n\n\n            $data = $form-\u003egetData();\n            // do anything you want ...\n        }\n    }\n\n\n    return array('form' =\u003e $form-\u003ecreateView());\n}\n\n```\n\n### Step 4: Create your own provider\n\nYou can create your own service form provider that implements FormProviderInterface.\n\n### Step 5: Exemple of JS to implement in your project\n\n```js\n\n\n\u003cscript\u003e\n\n        function initializeEvents() {\n            $(\".tipped\").tipper();\n        }\n\n        $(document).ready(function() {\n            initializeEvents();\n        });\n\n        var collectionHolder = $('.prototype');\n\n        var $addTagLink = $('\u003ca href=\"#\" class=\"add_tag_link\"\u003eAjouter\u003c/a\u003e');\n        var $newLinkLi = $('\u003cdiv class=\"childfieldwrap\"\u003e\u003c/div\u003e').append($addTagLink);\n\n        $(function() {\n\n            //collectionHolder.append($newLinkLi);\n\n            $addTagLink.on('click', function(e) {\n                e.preventDefault();\n                addTagForm(collectionHolder, false);\n            });\n\n            collectionHolder.find('div.fieldwrap .fieldwrap').each(function(index) {\n                console.log(index);\n                if(index) {\n                    addTagFormDeleteLink($(this));\n                }\n            });\n\n\n            if (!$('.prototype').children().length) {\n                addTagForm(collectionHolder, true);\n            }\n\n\n            $('input:first', collectionHolder).after($addTagLink);\n        });\n\n        function addTagForm(collectionHolder, isFirst) {\n            var prototype = collectionHolder.attr('data-prototype');\n\n            var newForm = prototype.replace(/__name__/g, collectionHolder.children().length);\n\n            var $newFormLi = $('\u003cdiv class=\"childfieldwrap\"\u003e\u003c/div\u003e').append(newForm);\n\n            collectionHolder.append($newFormLi);\n            if(!isFirst)\n                addTagFormDeleteLink($newFormLi);\n\n            initializeEvents();\n        }\n\n        function addTagFormDeleteLink($tagFormLi) {\n            var $removeFormA = $('\u003ca href=\"#\" class=\"delete\"\u003eSupprimer\u003c/a\u003e');\n            $('input', $tagFormLi).after($removeFormA);\n\n            $removeFormA.on('click', function(e) {\n                e.preventDefault();\n                $tagFormLi.remove();\n            });\n        }\n\n    \u003c/script\u003e\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facseo%2Fdynamicformbundle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Facseo%2Fdynamicformbundle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facseo%2Fdynamicformbundle/lists"}