Ayuda Con Dialog Box

Estimados:

Les cuento lo que necesito,

Tengo que ingresar los siguientes campos en un Dialog-Box.

Cantidad: 4

Numero primer cheque: 200

fecha: 24/03/2014

monto: 30.000

y en la vista me muestre lo siguiente en unos imput:

200 - 24/03/2014 - 30.000

201 - 24/03/2014 - 30.000

202 - 24/03/2014 - 30.000

203 - 24/03/2014 - 30.000

No se muy bien como puedo hacer esto , el número de cheque tiene que ir aumentado dependiendo la cantidad de cheques que sea así como se ve en el ejemplo que escribí.

Lo unico que tengo echo hasta el momento es lo siguiente en la vista tengo esto




<?php

  // 1. preparar los scripts de jQuery:

  $cs = Yii::app()->getClientScript();

  $cs->registerCoreScript('jquery');

  $cs->registerScriptFile($cs->getCoreScriptUrl()."/jui/js/jquery-ui.min.js");

  $cs->registerCssFile($cs->getCoreScriptUrl()."/jui/css/base/jquery-ui.css");

  // validator no lo trae Yii, asi que lo ponemos a mano en folder /JS/

  $cs->registerScriptFile("js/jquery-validate.js");

  $cs->registerScriptFile("js/json2.js");

  $cs->registerScriptFile("js/dialogo1.js");

?>


<?php

  // 2. un simple lanzador del dialogo

?>

<a id='lanzador' style='cursor: pointer;'>cheque</a>




<?php

  // 3. el codigo del lanzador

?>

<script>

  new Dialogo1(

  {

    idlanzador: "lanzador",

    iddialogo: "dialogo1",

    action: "index.php?r=asiento/agregarcheque",  // esta es la accion que ahi que hacer en el controlador 

    logid: "logger"

  }

);</script>




<?php // 4. el layout html del dialogo: ?>

<div id='dialogo1' class='form' style='display: none;'>

  <form id='dialogo1_form'>

    <div class="row">

      <label>Cantidad: <span class='required'>*</span></label>

      <input type='text' name='cantidad'>

    </div>

    <div class="row">

      <label>Primer Cheque</label>

      <label class='requiered'>Número: <span class='required'>*</span></label>

      <input type='text' name='numero'>

    </div>

    <div class="row">

      <label>Fecha:<span class='required'>*</label>

      <input type='text' name='fecha_fp' onkeyup='mascara(this,"/",patron,true)' maxlength="10">

    </div>

    <div class="row">

      <label>Monto: $<span class='required'>*</label>

      <input type='text' name='monto'>

    </div>

  </form>

</div>




Tengo guardados los archivos dialogo1.js, jquery-validate.js y json2.js en la ubicacion que corresponde.

Me falta crear la acción en el controlador la cual no se como crearla ni que debería llevar.

He leido esto pero no se como implementarlo para lo que necesito yo :(

Ojalá alguien me pueda ayudar se lo agradecería demasiado.

De ante mano

Muchísimas Gracias…

Yo te recomiendo utilizar CJuiDialog.

Ejemplo1

Ejemplo2

Si lo que quieres es un ejemplo completo, tendrias que darme oportunidad de hacer algo para mostrarte.

;)

Ya po compadre te lo agradeceria demasiado.

Esto deberia darte una mejor idea de como debes implementarlo, no tuve tiempo de probarlo a detalle, pero lo basico y lo que buscas esta aqui:

Controller




    public function actionProcessModalData() {

        Yii::log(__METHOD__);


        $output = array('status'=>400, 'message'=>'Invalid request. Please do not repeat this request again.');


        $cantidad = (int) Yii::app()->getRequest()->getPost('cantidad');

        $numero = (int) Yii::app()->getRequest()->getPost('numero');

        $fecha = Yii::app()->getRequest()->getPost('fecha');

        $monto = (float) Yii::app()->getRequest()->getPost('monto');


        if (Yii::app()->getRequest()->getIsPostRequest() && !empty($cantidad) && !empty($numero) && !empty($fecha) && !empty($monto)) {

            $data = array();

            for ($i = 0; $i < $cantidad; $i++) {

                $row = array('cheque'=>$numero + $i + 1, 'fecha'=>$fecha, 'monto'=>$monto);

                $data[] = $row;

            }


            $output = array('status'=>200, 'message'=>'Successful Transaction', 'content'=>$data);

        }

        echo CJSON::encode($output);

        Yii::app()->end();

    }



View




<?php echo CHtml::Button('Open Modal', array('id'=>'open-btn')); ?>

<div id="html-result"></div>

<?php

$this->beginWidget('zii.widgets.jui.CJuiDialog', array(

    'id'=>'my-dialog',

    'options'=>array(

        'title'=>'My Title',

        'autoOpen'=>false,

        'modal'=>true,

        'width'=>600,

        'height'=>'auto',

        'resizable'=>false,

        'buttons'=>array(

            array(

            'id'=>'submit-btn',

            'text'=>'Submit',

            ),

            array(

            'text'=>'Cancel',

            'click'=>'js:function() { $(this).dialog("close"); }'

            )

        ),

        'open'=>'js:function() {

            $("#cantidad").focus();

        }'

    )

));

?>

<div class="row">

    <label>Cantidad: <span class='required'>*</span></label>

    <input type='text' id='cantidad'>

</div>

<div class="row">

    <label>Primer Cheque</label> <label class='requiered'>Número: <span class='required'>*</span></label>

    <input type='text' id='numero'>

</div>

<div class="row">

    <label>Fecha:<span class='required'>*</label>

    <input type='text' id='fecha_fp' maxlength="10">

</div>

<div class="row">

    <label>Monto: $<span class='required'>*</label>

    <input type='text' id='monto'>

</div>

<?php $this->endWidget('zii.widgets.jui.CJuiDialog'); ?>

<script type="text/javascript">

(function($) {

    $(document.body).on('click', '#open-btn', function() {

        $("#my-dialog").dialog("open");

    });

    $(document.body).on('click', '#submit-btn', function() {

        var cantidad = $('#cantidad').val();

        var numero = $('#numero').val();

        var fecha_fp = $('#fecha_fp').val();

        var monto = $('#monto').val();


        $.ajax({

            async : false,

            url : '<?php echo $this->createUrl("processModalData"); ?>',

            type : 'POST',

            data : {

                cantidad : cantidad,

                numero : numero,

                fecha : fecha_fp,

                monto : monto

            },

            dataType : 'json',

            beforeSend : function() {

            },

            complete : function() {

            },

            success : function(response) {

                if (response.status === 200) {

                    $("#my-dialog").dialog("close");


                    $('#html-result').html('');


                    if (response.content) {

                        var i = 0;

                        var items = response.content;

                        var html = '';


                        for (i; i < items.length; ++i) {

                            //console.log(items[i]);

                            html += items[i].cheque + ' - ' + items[i].fecha + ' - ' + items[i].monto + '<br>';

                        }

                        $('#html-result').html(html);

                    }

                }


            },

            error : function(jqXHR) {

                console.log('error: ' + jqXHR.status + ', ' + jqXHR.statusText);

                throw new Error("Error");

            }

        });

    });

})(jQuery);

</script>



Si te sirve de algo mi propuesta, agradeceria un +1.

Saludos

:rolleyes:

Supongo q esos datos irán a una base de datos, entonces otra opción sería que tu dialog hiciese una inserción AJAX y en el success actualizar el CGridView en el q supongo mostrarás todos los cheques. Además de esta forma tendrás filtrado implementado gracias al CGridView.

Para aumentar el nº de cheques, utilizaría un autoincremental o secuencia para q la base de datos te lo gestione, pq si utilizas funciones como MAX, nunca te puedes asegurar de q no se repita el Nº de cheque, pq podría ser q más de 1 usuario estuviese creando cheques al mismo tiempo.

Un saludo.

Daniel Galvan : GRACIAS POR LA REPUESTA ME SIRVIO DEMASIADO , LE AFINE ALGUNOS DETALLES Y QUEDO OK. AHI LE DI EL +1 QUE ME PEDISTE.

lagogz: LA SOLUCION QUE ME DIO DANIEL ME SIRVIO YA QUE NO NECESITABA INGRESAR A UNA BASE DE DATOS SOLO MOSTRAR EN LA VISTA , GRACIAS DE TODAS FORMAS POR RESPONDER SE AGRADECE.

SALUDOS Y MUCHAS GRACIAS POR SU TIEMPO SE LES AGRADECE MUCHO :) :) :)

Que bien que te sirvio. Gracias por el +1.

Los mejores saludos.