it-swarm-es.tech

Selector de fecha / hora en componente

En mi componente personalizado, necesito ingresar la fecha y la hora.

El elemento calendario estándar de Joomla admite un selector de fecha, pero no un selector de hora.

¿Alguien puede ayudarme y señalarme un selector de fecha y hora alternativo?

6
Piero Marsilio

El único inconveniente de la solución de @ johanpw es usar # datetimepicker2, lo que significa que este tipo de campo solo se puede usar una vez. Buena solución de lo contrario!

En su lugar, intente lo siguiente en su /modules/mod_yourmodule/fields/datetime.php

$id = str_replace('jform[','',str_replace(']','',$this->name));

return '<div id="datetimepicker'.$id.'" class="input-append date">'.
                 '<input name="'.$this->name.'" data-format="MM/dd/yyyy HH:mm:ss PP" value="'.$this->value.'" type="text" />'.
                 '<span class="add-on">'.
                   '<i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>'.
                 '</span>'.
                '</div>'.
                '<script type="text/javascript">'.
                  'jQuery(function() {'.
                    'jQuery("#datetimepicker'.$id.'").datetimepicker({'.
                      'language: "en",'.
                      'pick12HourFormat: true,'.
                      'format: "yyyy-MM-dd hh:mm:ss"'.
                    '});'.
                  '});'.
                '</script>';

También agregué en 'format: "yyyy-MM-dd hh:mm:ss"' para que pueda usarlo correctamente dentro de un componente con un campo SQL de fecha y hora si lo desea.

También tuve problemas en los que el cuadro de entrada desaparecería después de seleccionar una fecha, esto podría ser solo yo, pero si alguien más experimenta esto, intente esto en su administrador css:

.input-append.date {
    display: inline-block!important;
}
4
VaciDesign

Puedes crear tus propios tipos de campos personalizados en Joomla. Este ejemplo es para un módulo, pero el mismo proceso funciona con componentes:

Crea este archivo: /modules/mod_yourmodule/fields/datetime.php

<?php
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');

// Add CSS and JS
JHtml::stylesheet('http://netdna.bootstrapcdn.com/Twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css');
JHtml::stylesheet('http://tarruda.github.com/bootstrap-datetimepicker/assets/css/bootstrap-datetimepicker.min.css');
JHtml::script('http://tarruda.github.com/bootstrap-datetimepicker/assets/js/bootstrap-datetimepicker.min.js');

jimport('joomla.form.formfield');

class JFormFieldDateTime extends JFormField {

    protected $type = 'DateTime';

    public function getInput() {
            return '<div class="well">'.
                    '<div id="datetimepicker2" class="input-append">'.
                        '<input data-format="MM/dd/yyyy HH:mm:ss PP" type="text"></input>'.
                        '<span class="add-on">'.
                          '<i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>'.
                        '</span>'.
                      '</div>'.
                    '</div>'.
                    '<script type="text/javascript">'.
                      'jQuery(function() {'.
                        'jQuery("#datetimepicker2").datetimepicker({'.
                          'language: "en",'.
                          'pick12HourFormat: true'.
                        '});'.
                      '});'.
                    '</script>';
    }
}

Ahora tiene un tipo de campo personalizado. Para usarlo, coloca esto en tu .xml archivo:

<fields name="params">
   <fieldset name="basic" addfieldpath="/modules/mod_yourmodule/models/fields">
       <field name="title" type="DateTime" label="Select Date and Time" description=""   />
   </fieldset>
</fields>

Joomla Custom Field type

(Basado en http://tarruda.github.io/bootstrap-datetimepicker/ )

3
johanpw

A partir de Joomla 3.7, se incluye un selector de tiempo en el núcleo. Los documentos para esto son aquí , pero la esencia es la siguiente.

Si desea hacer esto a través de una definición de formulario XML, use

<?xml version="1.0" encoding="utf-8"?>
<form>
    <fieldset>
        <field
            name="mydatetimefield"
            type="calendar"
            label="COM_MYCOMPONENTNAME_FIELD_DATETIME"
            showtime="true"
            format="%Y-%m-%d %H:%M:%S"
        />
    />
/>

O si quieres JHTML directamente, entonces es

JHtml::_(
'calendar',
'',
'mydatetimefield',
'mydatetimefieldid',
'%Y-%m-%d %H:%M',
[ 'showTime'=>'showTime' ]);

Los puntos clave en estos dos métodos son el 'showtime' y el formato. El formato debe incluir algunos elementos de tiempo %H, %M, %S, de lo contrario, obtendrá un selector de tiempo, pero el tiempo seleccionado no volverá a su servidor.

1
Dom

JHTML :: _ ('behaviour.modal');

echo JHTML :: calendar ('2015-04-03', 'nombre', 'id', '% d.% m.% Y% H:% I');

0
Bender