Skip to content

Latest commit

 

History

History
120 lines (101 loc) · 3.74 KB

formsembed.md

File metadata and controls

120 lines (101 loc) · 3.74 KB

##Embeber Formularios con EmbedType (Opcion 1) es posible agregar varios campos segun su clase.

###En el form agregar EmbedType:

...
use MWSimple\Bundle\AdminCrudBundle\Form\Type\EmbedType;
...
$builder
    ->add('tags', EmbedType::class, [
        'entry_type' => TagType::class,
        'allow_add' => true,
        'allow_delete' => true,
        'by_reference' => false,
        'attr' => [
            'class' => 'tags_embed',
            'col' => 'col-md-12',
            'embed' => 'row',
            'embed_row_col' => 'col-md-12',
            'embed_row_style' => 'border-bottom: thin solid; margin: 10px 0px;',
        ],
    ])
    //para mas de un nivel
    /*->add('tags_second', EmbedType::class, [
        'entry_type' => TagType::class,
        'allow_add' => true,
        'allow_delete' => true,
        'by_reference' => false,
        'prototype_name' => '__nameembed__',
        'attr' => [
            'class' => 'tags_second_embed__name__',
            'col' => 'col-md-12',
            'embed' => 'row',
            'embed_row_col' => 'col-md-12',
            'embed_row_style' => 'border-bottom: thin solid; margin: 10px 0px;',
        ],
    ])*/
    //->add('tags2', EmbedType::class, [
    //    'entry_type' => Tag2Type::class,
    //    ...
    //])
;

###En las vistas New y Edit agregar:

{% block javascript %}
    {{ parent() }}

    {# ATENCIÓN #}

    {# Si NO utiliza validación JS agregar: #}
    <script src="{{ asset('bundles/mwsimpleadmincrud/js/addForm_not_validator.js') }}"></script>
    <script src="{{ asset('bundles/mwsimpleadmincrud/js/embed_not_validator.js') }}"></script>

    {# Si utiliza la validación JS agregar: #}
    <script src="{{ asset('bundles/mwsimpleadmincrud/js/addForm.js') }}"></script>
    <script src="{{ asset('bundles/mwsimpleadmincrud/js/embed.js') }}"></script>

    <script type="text/javascript">
        $('.tags_embed').embed();
        {# $('.tags2_embed').embed(); #}

        {# Para mas de un nivel #}
        {#
        $('.tags_embed').embed();

        $('body').on('click', '.add_link_tags_embed', function(e) {
          var index = $(this).closest('.tags_embed').attr('data-index');
          if(typeof index === "undefined"){
            index = $(this).closest('.form-group').find('.tags_embed').attr('data-index');
          }
          $('.tags_second_embed'+index).embed();
        });
        #}
    </script>
{% endblock %}

###Si necesita boton para borrar el elemento agregar en el formulario usado en 'entry_type' en este caso TagType:

...
use MWSimple\Bundle\AdminCrudBundle\Form\Type\ButtonDeleteType;
...
$builder
    ->add('ButtonDelete', ButtonDeleteType::class, [
        'mapped' => false,
        'attr' => [
            'col' => 'col-md-1',
        ],
    ])
;

##Embeber Formularios con Collection (Opcion 2) (DEPRECADO)

Documentacion

###Se pueden usar los metodos: addForm() y removeForm(), incluidos en: addForm.js ###Crea los botones: addLink() y deleteLink(), para usar con addForm.js incluidos en: collection.js

<script src="{{ asset('bundles/mwsimpleadmincrud/js/addForm.js') }}"></script>
<script src="{{ asset('bundles/mwsimpleadmincrud/js/collection.js') }}"></script>

####Si no utiliza el validador por js utilizar el siguiente addForm

<script src="{{ asset('bundles/mwsimpleadmincrud/js/addForm_not_validator.js') }}"></script>
<script src="{{ asset('bundles/mwsimpleadmincrud/js/collection.js') }}"></script>

##Embeber Formularios con Collection (Opcion 3) utilizando ninsuo/symfony-collection

###Ejemplo ...