uso del picklist

49 views
Skip to first unread message

Jose Puertas

unread,
Jun 24, 2016, 5:42:23 AM6/24/16
to ZnetDK
Hola Pascal, estoy intentando usar el picklist de primeui para asignar varios usuarios a la vez:

Esta es la vista:

<script>
    $('#basic').puipicklist();
    </script>
<script>
    $(document).ready(function () {
        $('#zdk_user_asigna').zdkactionbar({
            whenadd: function() {
                /* Antes de visualizar el formulario "Nuevo jugador" */
                $("#dlg_asigna .zdk-dropdown").zdkdropdown('refresh');
            },
            whenedit: function() {
                /* Antes de visualizar el formulario "Modificar datos jugador" */
                $("#dlg_asigna .zdk-listbox").zdklistbox('refresh');
            }
        });
    });
</script>

<!-- Formulaire dans boîte de dialogueid="dlg_asigna" class="zdk-modal" -->

<div>
    
        <form class="zdk-form" id="asigna_jug"
              data-zdk-action="asigjugadoresctrl:RecJugEquipos"
              data-zdk-datatable="table_jugadores">
            <!-- <label>Número : </label>
             <input name="id_equipo" disabled type="text">-->
            <label>Equipo : </label>
            <select class="zdk-dropdown" name="equipo" 
                    data-zdk-action="equiposctrl:getEquipos"
                    data-zdk-noselection="Seleccionar un valor..."></select>

             <label>Categoria: </label>
             <select class="zdk-dropdown" name="categoria" 
                     data-zdk-action="categoriasctrl:RecCategoria"
                     data-zdk-noselection="Seleccionar un valor..."></select>
             <input class="zdk-row-id" type="hidden" name="id_equipo">
              <label>Temporada: </label>
             <select class="zdk-dropdown" name="temporada" 
                     data-zdk-action="asigjugadoresctrl:Rectemporada"
                     data-zdk-noselection="Seleccionar un valor..."></select>
             <input class="zdk-row-id" type="hidden" name="id_equipo">
          
            <fieldset>
                <legend>Elegir jugadores para el equipo</legend>
                <div id="basic">
                    
                <select class="zdk-listbox" name="jugador[]" multiple="multiple"
                        data-zdk-action="asigjugadoresctrl:RecJugadores"></select>

                    <select class ="zdk-listbox" name="jugadores[]" multiple="multiple"></select>
                </div>
            </fieldset>
           
            <button class="zdk-bt-save zdk-close-dialog" type="submit">Guardar</button>
            <button class="zdk-bt-cancel zdk-close-dialog" type="button">Cancelar</button>
           
        </form>
    </div>

el controlador:

class asigjugadoresctrl extends \AppController {

static protected function action_RecJugadores() {
        $jugadoresDAO = new \app\model\jugadasigDAO();
        $jugadoresDAO->setSortCriteria('Use_nombre');
        $jugador = array();
        while ($row = $jugadoresDAO->getResult()) {
            /* $categoria[] = $row; */
            $jugador[] = array('label' => $row['Use_nombre'] . ' ' . $row['Use_apellidos'], 'value' => $row['id_usuario']);
        }
        /* Réponse retournée au contrôleur principal */
        $response = new \Response();
        $response->rows = $jugador;
        $response->success = true;
        return $response;
    }
    

no introduce los datos en el primer select, y este es el controlador para una vez seleccionados los registre en la base de datos, pero sin duplicados en el id_usuario

static protected function action_RecJugEquipos() {
        
        $request = new \Request();
        $selectJugadores = $request->jugadores; // Array of the selected products in the listbox
        $selectEquipo = $request->equipo; // Product category selected in the dropdown
        $selectcategoria = $request->categoria;
        $selecttemporada = $request->temporada;
        $jugadoresDAO = new asigjugaDAO(); // The custom DAO used to store the product data

        foreach ($selectJugadores as $value) {
                $jugadoRow = array('id_usuario' => $value, 'id_equipo' => $selectEquipo, 'id_categoria' => $selectcategoria,'id_temporada' => $selecttemporada);
                $jugadoresDAO->store($jugadoRow);
        }
        
        // JSON Response
        $response = new \Response();
        $response->setSuccessMessage("Asingación", "Asignacion correcta");
              return $response;
}

Saludos

PD, también adjunto captura de pantalla para que veas que el picklist lo dibuja perfecamente
asignaciones.pdf

Pascal Martinez

unread,
Jun 26, 2016, 3:18:37 PM6/26/16
to ZnetDK
Holà José,

Prueba los datos devueltos por el acción recjugadores usando la function de depuración de tu navegador.

Abajo, un ejemplo de depuración con Chrome:


Saludos,

Pascal MARTINEZ

Jose Puertas

unread,
Jun 26, 2016, 4:20:26 PM6/26/16
to ZnetDK
Gracias Pascal, aqui te envio lo que me devuelve despues de la depuración que me has indicado.

Saludos
datos retorno recjugadores.pdf

Roger

unread,
Aug 29, 2017, 2:55:20 PM8/29/17
to ZnetDK
Bonjour,
Excusez moi de revenir sur cette publication.
j'essaie d'utiliser le puipicklist mais le chargement des données à partir du contrôleur ne marche pas.
Pouriez -vous m'aider.

Pascal Martinez

unread,
Sep 1, 2017, 7:04:00 AM9/1/17
to ZnetDK
Bonjour Roger,

Je regarde si je peux vous fournir un exemple...

Pascal MARTINEZ

Pascal Martinez

unread,
Sep 2, 2017, 3:57:33 AM9/2/17
to ZnetDK
Roger,

Le composant PrimeUI Picklist n'a pas été adapté dans ZnetDK pour être connecté directement à une action de contrôleur PHP.

Cependant, avec peu d'effort, il est possible de :
  • Charger les 2 listes à partir d'une action PHP dédiée via un appel à la méthode znetdk.request(),
  • Transmettre les éléments sélectionnés à l'action de contrôleur déclarée pour le formulaire ZnetDK.
Voici un exemple de vue et de contrôleur ZnetDK illustrant mes propos.
  • Exemple de vue myview.php
<form class="zdk-form" data-zdk-action="mycontroller:submit">
    <div id="example-picklist">
        <select name="source[]" multiple="multiple">
        </select>  
        <select name="target[]" multiple="multiple">  
        </select>
    </div>
    <button class="zdk-bt-save" type="submit">Submit</button>
</form>
<script>
    $(document).ready(function(){
        $("#example-picklist").puipicklist({
            sourceCaption: "Source value",
            targetCaption: "Target value"
        });
        znetdk.request({
            control: 'mycontroller',
            action: 'picklist',
            callback: function(response) {
                $("#example-picklist").puipicklist({
                    sourceData: response.source,
                    targetData: response.target
                });
            }
        });
    });
</script>

  • Exemple de contrôleur mycontroller.php  
<?php
namespace controller;

class MyController extends \AppController {

    static protected function action_submit() {
        $request = new \Request();
        $sourceItems = implode(',', $request->source);
        $targetItems = implode(',', $request->target);
        $response = new \Response();
        $response->setSuccessMessage('Response',
             "Source items : $sourceItems, target items : $targetItems");
        return $response;
    }
    
    static protected function action_picklist() {
        $response = new \Response();
        $response->source = array(
            array('label' => 'Value 1', 'value' => 1),
            array('label' => 'Value 2', 'value' => 2),
            array('label' => 'Value 3', 'value' => 3)
        );
        $response->target = array(
            array('label' => 'Value 4', 'value' => 4),
            array('label' => 'Value 5', 'value' => 5)
        );
        return $response;
    }

}

Ce code est bien-sûr à adapter à vos besoins,

Bons développements,
Pascal MARTINEZ
Reply all
Reply to author
Forward
0 new messages