culabs / jquery-bundle
Easy integration of jquery into symfony2
Installs: 169
Dependents: 0
Suggesters: 0
Security: 0
Stars: 8
Watchers: 1
Forks: 1
Open Issues: 0
Type:symfony-bundle
pkg:composer/culabs/jquery-bundle
This package is not auto-updated.
Last update: 2022-02-01 12:21:51 UTC
README
CULabsjQueryBundle
==================
AutocompleteDoctrineType
------------------------
Este widget permite utilizar el widget "autocomplete" de jQuery.
Para poner un ejemplo supongamos que tenemos una entidad con el nombre "AcmeDemoBundle:User" y tiene una relación de "uno a mucho" con una entidad "AcmeDemoBundle:Tienda". En la clase "TiendaType" adicionamos el siguiente campo al "builder"
    $builder->add('gestor', 'jquery_doctrine_autocomplete', array(
        'url'   => 'autocomplete_user',
        'class' => 'AcmeDemoBundle:User',
    ));
El campo "url" es el que contiene el nombre de la ruta a utilizar en el autocompletamiento.
El siguiente paso es crear la ruta "autocomplete_user". El bundle contiene una controladora genérica para el trabajo con cualquier entidad. Si lo crees necesario puedes utilizar una controladora própia o extender esta.
    autocomplete_user:
    pattern:  /autocomplete_user
    defaults:
      _controller: CULabsjQueryBundle:AutocompleteDoctrine:index
      class: CULabsMainBundle:User
      method_for_query: autocomplete
El campo "method_for_query" es utilizado para indicar que método de la clase repositorio será utilizado para hacer la consulta. En el siguiente fragmento de código se ve un ejemplo.
    class UserRepository extends EntityRepository
    {
        public function autocomplete(array $param)
        {
            $qb = $this->createQueryBuilder('user');
        
            return $qb->where($qb->expr()->like($qb->expr()->concat('user.name', $qb->expr()->concat('\' \'', 'user.lastname')), $qb->expr()->literal(sprintf('%%%s%%', $param['term']))))
                      ->setMaxResults($param['limit'])
                      ->getQuery()
                      ->execute()
            ;
        }
    }
 
AutocompleteType
----------------
Este Widget permite el autocompletamiento dado un conjunto de datos definidos. Para usarlo solo hay que adicionar el siguiente código en el método "buildForm" de un formulario.
    $builder->add('usuario', 'jquery_autocomplete', array(
        'choices' => array(
            'admin' => 'Administrador', 
            'user1' => 'Usuario1', 
            'user2' => 'Usuario2'
        )
    ));
DatepickerType
--------------
Permite la creación de datepicker
    $builder->add('fecha', 'jquery_datepicker')
DatetimepickerType
------------------
Permite la creación de datepicker, usando el plugin "http://trentrichardson.com/examples/timepicker/"
    $builder->add('fecha', 'jquery_datetimepicker')
jq_remote_form
--------------
Esta función de twig permite enviar a través de ajax un formulario, que puede también contener ficheros. Utiliza el plugin de jQuery "http://malsup.com/jquery/form/". El uso básico es el siguiente.
    <form id="formulario" action="#" method="post">
      {{ form_widget(form) }}
      <input type="submit" value="Enviar"/>
      <span id="indicador" style="display: none">Registrando...</span>
    </form>
    {{ jq_remote_form('formulario', {
        'update':   'zona_update', 
        'url':      path('la_ruta_a_utilizar'),
        'complete': "jQuery('#indicador').hide();",
        'loading':  "jQuery('#indicador').show();",
    }) }}
    <div id="zona_update"></div>
SliderType
----------
Incluido el Widget slider.
    $builder->add('numero', 'jquery_slider')
Tabs Widget
-----------
A través del uso de "etiquetas" de twig se puede crear un componente "Tab" de jQuery. Acontinuación tres ejeplos.
    {# Tabs simple con tres pestañas  #}
    {% jqtabs %}
        {% jqtabitem title 'One'|trans %}
            <p>{{ 'One'|trans }}</p>
        {% endjqtabitem %}
        {% jqtabitem title 'two'|trans %}
            <p>{{ 'Two'|trans }}</p>
        {% endjqtabitem %}
        {% jqtabitem title 'Three'|trans %}
            <p>{{ 'Three'|trans }}</p>
        {% endjqtabitem %}
    {% endjqtabs %}
    {# Ejemplo de paso de valores para la configuracion y manipulación del objeto con javascript #}
    {% jqtabs config { 'event': '"mouseover"' } js_name 'my_tab' %}
        {% for i in 1..5 %}
            {% jqtabitem title 'title ' ~ i %}
                <p>{{ i }}</p>
            {% endjqtabitem %}
        {% endfor %}
        {% jqtabitem title 'Last'|trans %}
            <p>{{ 'Last'|trans }}</p>
        {% endjqtabitem %}
    {% endjqtabs %}
    <script type="text/javascript">
        my_tab.bind("tabsadd", function (event, ui) {
            $( ui.panel ).append( "<p>body</p>" );
        });
        my_tab.tabs( "add", "#tabs-q", 'title' );
    </script>
    {# Ejemplo de Tabs anidados #}
    {% jqtabs %}
        {% jqtabitem title 'One'|trans %}
            <p>{{ 'One'|trans }}</p>
        {% endjqtabitem %}
        {% jqtabitem title 'two'|trans %}
            <p>{{ 'Two'|trans }}</p>
        {% endjqtabitem %}
        {% jqtabitem title 'Three'|trans %}
           {% jqtabs %}
               {% for i in 1..5 %}
                   {% jqtabitem title 'title ' ~ i %}
                      <p>{{ i }}</p>
                   {% endjqtabitem %}
               {% endfor %}
           {% endjqtabs %}
        {% endjqtabitem %}
    {% endjqtabs %}
Dialog Widget
-------------
A través del uso de "etiquetas" de twig se puede crear un componente "Dialog" de jQuery. Acontinuación tres ejeplos.
    {# Ejemplo simple #}
    {% jqdialog config {'title':'"Demo"'} %}
        <p>Text in the body</p>
    {% endjqdialog %}
    {# Paso de más parámetros de configuración y creación de un botón. #}
    <script type="text/javascript">
        function my_function()
        {
            $( this ).dialog( "close" );
        }
    </script>                
    {% jqdialog config {
        'title':'"Demo"', 
        'modal':'true', 
        'buttons':'{Ok:my_function}'
    } js_name 'my_dialog' %}
        <p>Text in the body</p>
    {% endjqdialog %}