Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Joomla表单中的可重复字段中使用日历字段?_Joomla_Joomla3.3 - Fatal编程技术网

如何在Joomla表单中的可重复字段中使用日历字段?

如何在Joomla表单中的可重复字段中使用日历字段?,joomla,joomla3.3,Joomla,Joomla3.3,我想让用户能够输入多个日期,并希望我可以使用repeatable表单字段类型(Joomla 3.3的新版本) 我确实获得了模式弹出窗口,其中有行用于添加/删除项目,但是日历图标不会弹出日历选择器。我尝试了一个文本输入,似乎效果不错 我的表格定义的相关部分: <field name="event_dates" type="repeatable" id="event_dates" icon="calendar" l

我想让用户能够输入多个日期,并希望我可以使用
repeatable
表单字段类型(Joomla 3.3的新版本)

我确实获得了模式弹出窗口,其中有行用于添加/删除项目,但是日历图标不会弹出日历选择器。我尝试了一个
文本
输入,似乎效果不错

我的表格定义的相关部分:

<field
        name="event_dates"
        type="repeatable"
        id="event_dates"
        icon="calendar"
        label="Event calendar dates"
        select="Select dates"
    >
    <fields name="jmfields_event_dates">
        <fieldset 
                name="event_dates_modal"
                repeat="true"
                hidden="true">
            <field 
                name="event_date"
                type="calendar"
                format="%d-%m-%Y"
                label="Date"
                />
        </fieldset>
    </fields>
</field>

我还没有尝试在Repeatable字段中设置日历字段,但是Repeatable字段有很多问题/冲突。在浏览器错误控制台中检查任何此类问题。我建议等待可重复字段变得更稳定。

您可以尝试使用(“乘法器模块”)。我使用了不同的方法来获得相同的结果,就像Joomla repeatable表单字段类型一样,也避免了“弹出窗口中的弹出窗口”。仍处于开发阶段,但也许您可以尝试使用该概念。问候

我是如何解决类似问题的?

我对默认的Joomla可重复表单字段类型有类似的问题,尤其是“弹出”表单字段类型(例如Joomla“date”)。正因为如此,我创建了某种模块模式(mod_乘数),在这里我使用了不同的方法->我不会重复字段的形式(section),我希望对多次插入使用相同的section

模块模乘器

模块xml文件中有3个保留字段“包装器”、“转发器”和“内容”

“包装器”内是“可重复”字段的位置:


所有内容都将以JSON格式存储在“content”字段中。每次按下表单“添加”按钮时,我们都会向“内容”字段添加一行数据。毕竟,在“内容”中,我们将有一行行数据

它在tmpl/default.php文件中的外观如何,以及如何获取字段值?

分层数据结构有三个层次:行、行和字段

  • 所有数据=>$rows
  • 一行数据=>$row
  • 一个字段=>$row->field\u name
mod_乘数的实际示例:

在“wrapper”中是字段“country”和“city”,我们按名称(在tmpl/default.php中)对它们进行了如下调用:

<ul>
<?php foreach ($rows as $row):?>
  <li>
    <?php echo $row->country;?>:<?php echo $row->city;?>    
  </li>  
<?php endforeach; ?>
</ul>
  • :

我也想做同样的事情,我最终在普通文本字段上使用jQuery日期选择器,而不是默认的日历字段。您可以在页面上添加jQuery脚本以定位输入字段,然后进行一些处理,直到默认日历的实际修复完成为止

您需要在标题中包含以下文件:

JHtml::_('jquery.framework');
JHtml::_('jquery.ui');
$doc =& JFactory::getDocument();
// loaded from the code.jquery.com site
$doc->addStylesheet('http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css');
// I downloaded the datepicker only and placed it in this folder
$doc->addScript(JURI::root().'/media/jui/js/datepicker/jquery-ui.min.js');
字段的xml:

<!-- Course_date Field. Type: Repeatable. (joomla) -->
<field
    type="repeatable"
    name="course_date"
    label="Course Dates"
    description="COM_LEARNINGMANAGER_EVENT_COURSE_DATE_DESCRIPTION"
    id="course_date"
    class="course_dates"
    select="COM_LEARNINGMANAGER_EVENT_COURSE_DATE_SELECT"
    icon="list"
    maximum="50">
    <fields name="course_date_fields" label="">
        <fieldset hidden="true" name="course_date_modal" repeat="true">
            <!-- Course Field. Type: Courses. (custom) -->
            <field
                type="courses"
                name="course"
                label="COM_LEARNINGMANAGER_EVENT_COURSE_LABEL"
                class="list_class"
                button="false"
            />
            <!-- Date Field. Type: Text. (joomla) -->
            <field
                type="text"
                name="date"
                label="COM_LEARNINGMANAGER_EVENT_DATE_LABEL"
                size="20"
                maxlength="50"
                description="COM_LEARNINGMANAGER_EVENT_DATE_DESCRIPTION"
                class="text_area datepicker"
                readonly="false"
                disabled="false"
                filter="STRING"
                message="Error! Please add date here."
                hint="COM_LEARNINGMANAGER_EVENT_DATE_HINT"
            />
        </fieldset>
    </fields>
</field>

以下是需要添加到default.php或edit.php文件的脚本:

<script type="text/javascript">
// means your repteable field can only take 50 rows
<?php $fieldNrs = range(1,50,1); ?>
jQuery('input.form-field-repeatable').on('row-add', function (e) {
<?php foreach($fieldNrs as $nr): ?>
    jQuery('#jform_course_date_fields_date-<?php echo $nr ?>').datepicker(
        {
            minDate: -1,
            prevText: '',
            nextText: '',
            maxDate: '+3M',
            firstDay: 1,
            dateFormat: 'yy-mm-dd',
            onSelect: function(dateText, inst) {
            jQuery('#jform_course_date_fields_date-<?php echo $nr ?>').val(dateText);
        }
    });
<? endforeach; ?>
});
</script>

//意味着您的repteable字段只能占用50行
jQuery('input.form field repeatable')。on('row-add',function(e){
jQuery(“#jform_课程_日期_字段_日期-”).datepicker(
{
minDate:-1,
上一个文本:“”,
下一个文本:“”,
最大日期:'+3M',
第一天:1,
日期格式:'年-月-日',
onSelect:函数(日期文本,inst){
jQuery('#jform_course_date_fields_date-').val(dateText);
}
});
});

享受吧

遗憾的是,这是处理多个约会的好方法。我在控制台中没有发现错误,但我确实注意到日历按钮都有相同的Id。@JanMisker“日历按钮都有相同的Id”-这很有趣,因为它肯定会使页面上的任何代码行为不当