gpt4 book ai didi

银条 3 : How to show date picker in CMS datagrid

转载 作者:行者123 更新时间:2023-12-01 10:13:32 25 4
gpt4 key购买 nike

我有一个数据网格,允许用户将事件添加到事件页面。

在上面,我有 2 个日期字段,因此它们可以指定开始日期和结束日期。这些字段不显示日期选择器,除非我在 Sapphire/javascript 中注释掉 DateField.js 中的一行(第 12 行 - if(!config.showcalendar) return;)。

有没有办法在不篡改内核的情况下显示日期选择器?

<?php
class Event extends DataObject{
public static $db = array(
'Title' => 'Varchar(255)',
'StartDate' => 'Date',
'EndDate' => 'Date',
'Summary' => 'Text',
'Content' => 'HTMLText'
);

static $has_one = array(
'WhatsOnCategory' => 'WhatsOnCategory',
'EventImage' => 'Image'
);

public static $summary_fields = array(
'Title' => 'Title'
);

public static $default_sort='StartDate';

public function getCMSFields() {
return new FieldList(
new TextField('Title', 'Title'),
new DateField('StartDate', 'StartDate'),
new DateField('EndDate', 'EndDate'),
new TextField('Summary', 'Summary'),
new HTMLEditorField('Content', 'Content'),
new UploadField('EventImage','Image')
);
}
}

最佳答案

默认情况下,DateField 不显示日历弹出窗口,您必须对其进行配置才能显示。

申请所有 DateFields:(您可以将此行放在 getCMSFields 方法的顶部)

DateField::set_default_config('showcalendar', true);

应用于特定的 DateField 实例

return new FieldList(
DateField::create('StartDate', 'StartDate')->setConfig('showcalendar', true)
...
)

使用 DateField::create 方法而不是新的 DateField 允许您直接在一行中调用该类的方法,这很好。我认为这也是 SS 对象的最佳实践。

更新

在 SilverStripe 3 中,可以使用新的配置系统设置全局配置。

即。在你的配置 YML 中

DateField:
default_config:
showcalendar: true

如果您正在使用 DateTimeField,要使“每个实例”配置正常工作,您需要先调用 getDateField:

$myDateTimeField->getDateField()->setConfig('showcalendar',true);

如果您想在 DateTimeField 的时间字段上使用时间选择器 UI,则需要安装 TimePicker module然后:

$myDateTimeField->setTimeField(
TimePickerField::create('StartTime[time]', '')
->addExtraClass('fieldgroup-field')
);

关于银条 3 : How to show date picker in CMS datagrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com