Foros del Web » Programando para Internet » PHP » Zend »

[SOLUCIONADO] Problema beforeShowDay ZendX_JQuery_Form_Element_DatePicker

Estas en el tema de Problema beforeShowDay ZendX_JQuery_Form_Element_DatePicker en el foro de Zend en Foros del Web. Hola. Tengo un form en el que tengo un ZendX_JQuery_Form_Element_DatePicker. Quiero añadirle beforeShowDay pero no me funciona. ¿Me pueden ayudar? Mi formulario es el siguiente: ...
  #1 (permalink)  
Antiguo 23/05/2013, 12:35
 
Fecha de Ingreso: abril-2013
Mensajes: 82
Antigüedad: 11 años, 8 meses
Puntos: 0
Problema beforeShowDay ZendX_JQuery_Form_Element_DatePicker

Hola.

Tengo un form en el que tengo un ZendX_JQuery_Form_Element_DatePicker. Quiero añadirle beforeShowDay pero no me funciona. ¿Me pueden ayudar?

Mi formulario es el siguiente:

Código PHP:
public function init()
    {
       
$fecha = new ZendX_JQuery_Form_Element_DatePicker('fecha', array('readonly'=>'readonly'));
       
$fecha->setLabel('Seleccione fecha:')->setJQueryParam('dateFormat''yy-mm-dd')
             ->
setJqueryParam('regional''es')
             ->
setJqueryParam('yearRange'"2013:2020")->setJqueryParam('minDate'"+0d")->setJqueryParam('maxDate'"+3m")
             ->
setJqueryParam('beforeShowDay'disableAllTheseDays)
             ->
addValidator(new Zend_Validate_Date(array('format' => 'yyyy-mm-dd',)))->setRequired(true);

       
$this->addElements(array($fecha));

       
$this->addElement(
                    
'submit''Consultar Reserva', array()
            );
    } 
Y en la vista tengo:

* *
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3.  var disabledDays =JSON.parse('<?php echo json_encode($this->dias) ?>');
  4.  
  5.  
  6.     var diasclase =JSON.parse('<?php echo json_encode($this->diasclase) ?>');
  7.  
  8.  
  9.     function disableAllTheseDays(date) {
  10.     var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
  11.     for(i = 0; i < disabledDays.length; i++) {
  12.         if($.inArray((m+1) + '-' + d + '-' + y,disabledDays) != -1) {
  13.             return [false, "", "Unavailable"];
  14.         }
  15.     }
  16.      if($.inArray(date.getDay(), diasclase) > -1) {
  17.         return [false, "", "Unavailable"];
  18.     }
  19.     return [true];
  20. }
  21.  
  22. </script>
  23.  
  24.  
  25.  
  26. <?php echo $this->form;?>

Si quito el ->setJqueryParam('beforeShowDay', disableAllTheseDays) de mi form funciona perfectamente, pero si lo añado ya no me aparece el calendario.
¿Alguien me puede ayudar? Gracias
  #2 (permalink)  
Antiguo 23/05/2013, 13:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problema beforeShowDay ZendX_JQuery_Form_Element_DatePicker

Código PHP:
Ver original
  1. ->setJqueryParam('beforeShowDay', 'disableAllTheseDays')
  #3 (permalink)  
Antiguo 23/05/2013, 13:19
 
Fecha de Ingreso: abril-2013
Mensajes: 82
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema beforeShowDay ZendX_JQuery_Form_Element_DatePicker

Gracias por la rápida respuesta, he probado y tampoco me funciona así, ni con comillas dobles.
  #4 (permalink)  
Antiguo 23/05/2013, 13:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problema beforeShowDay ZendX_JQuery_Form_Element_DatePicker

Lo que pasa es que usando setJQueryParam le pasas un parámetro como tal a jQuery, no importa las comillas desde el lado de PHP, y el problema es que jQuery lo que espera es una función y esa no la puedes mandar desde PHP, lo tienes que hacer directo en jQuery.
  #5 (permalink)  
Antiguo 23/05/2013, 13:27
 
Fecha de Ingreso: abril-2013
Mensajes: 82
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema beforeShowDay ZendX_JQuery_Form_Element_DatePicker

Sería mucho pedir que me indicases cómo puedo hacer eso, no tengo ni idea de jquery y javascrip.
Muchas gracias por tu ayuda.
  #6 (permalink)  
Antiguo 23/05/2013, 17:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problema beforeShowDay ZendX_JQuery_Form_Element_DatePicker

Lee la documentación, aquí hay un ejemplo:
Código Javascript:
Ver original
  1. jQuery('#date').datepicker({
  2.         minDate: new Date(2010, 0, 1),
  3.         maxDate: new Date(2010, 5, 31),
  4.         dateFormat: 'DD, MM, d, yy',
  5.         constrainInput: true,
  6.         beforeShowDay: noWeekendsOrHolidays
  7.     });
  #7 (permalink)  
Antiguo 24/05/2013, 09:05
 
Fecha de Ingreso: abril-2013
Mensajes: 82
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema beforeShowDay ZendX_JQuery_Form_Element_DatePicker

Gracias por responder.

He comprobado que si mi vista hago:


Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3.     var disabledDays =JSON.parse('<?php echo json_encode($this->dias) ?>');
  4.     document.writeln(disabledDays);
  5.     //var diasclase = [2,3,5,6];
  6.     var diasclase =JSON.parse('<?php echo json_encode($this->diasclase) ?>');
  7.     document.writeln(diasclase);
  8.  
  9.  
  10.  
  11.     function disableAllTheseDays(date) {
  12.     var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
  13.     for(i = 0; i < disabledDays.length; i++) {
  14.         if($.inArray((m+1) + '-' + d + '-' + y,disabledDays) != -1) {
  15.             return [false, "", "Unavailable"];
  16.         }
  17.     }
  18.      if($.inArray(date.getDay(), diasclase) > -1) {
  19.         return [false, "", "Unavailable"];
  20.     }
  21.     return [true];
  22. }
  23.  
  24. $(function() {
  25.     $('#fecha').datepicker({
  26.         dateFormat: 'yy-mm-dd',
  27.         beforeShowDay: disableAllTheseDays,
  28.         minDate: '+1d',
  29.         maxDate: '+3m',
  30.         firstDay: 1});
  31.  
  32. });
  33. </script>
  34.  
  35. <form action="reservaclase" method="GET"/>
  36.     <div>
  37.         Selecciona Fecha:
  38.         <input type="text" name="fecha" id="fecha" readonly="readonly" required/>
  39.         <br><input type="submit" value="Consultar Clase"><br>
  40.     </div>

Así me funciona perfecto, pero yo lo que quiero es usar el form que he creado (no crear el form en la vista)

He intentado añadir el datepicker que he creado en javascript al form de esta manera:

Código PHP:
$this->form->addElement('fecha');
echo 
$this->form
¿Cómo lo podría agregar? Muchas gracias por toda la ayuda
  #8 (permalink)  
Antiguo 28/05/2013, 10:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problema beforeShowDay ZendX_JQuery_Form_Element_DatePicker

Con que crees un textinput en el servidor (Zend Form) es más que suficiente, luego con Javascript usando el ID puedes crear el datepicker, no es mucho problema.

Cada elemento que creas usando Zend_Form obtiene ese id por el nombre, es decir si haces esto:

$this->addElement('text', 'foo', array());

El ID del elemento pasa a ser #foo.

Saludos.
  #9 (permalink)  
Antiguo 28/05/2013, 10:39
 
Fecha de Ingreso: abril-2013
Mensajes: 82
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema beforeShowDay ZendX_JQuery_Form_Element_DatePicker

¡¡Muchas gracias por tu ayuda!!
  #10 (permalink)  
Antiguo 08/10/2013, 11:44
 
Fecha de Ingreso: octubre-2013
Mensajes: 1
Antigüedad: 11 años, 2 meses
Puntos: 0
Busqueda Problema ZendX_JQuery_Form_Element con zf2

Hola queria saber si alguno ha logrado habilitar zendx en zf2 y si me podria expecificar que es lo que se deberia hacer para que funcione ya que he visto muchas paginas y sin ningun resultado. Ademas tambien si alguno sabe por que en zf2 no funciona jquery autocomplete como se realiza en la pagina del mismo.

Saludos.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:10.