Date 网络表单更改日期隐藏日期
我对Drupal7比较陌生,我正在尝试创建一个定制的Web表单。我的目标是添加一个日期(由date模块提供)字段,其中不包含日期选项。因此,它显示月份和年份,隐藏了日期选项 我已经成功地实现了这一点,但只是通过将wholedate字段重新创建为自定义字段,但我想知道是否可以自定义日期模块提供的日期字段 下面是我表格的屏幕截图: 如何创建自定义日期字段:Date 网络表单更改日期隐藏日期,date,drupal,drupal-7,drupal-webform,drupal-hooks,Date,Drupal,Drupal 7,Drupal Webform,Drupal Hooks,我对Drupal7比较陌生,我正在尝试创建一个定制的Web表单。我的目标是添加一个日期(由date模块提供)字段,其中不包含日期选项。因此,它显示月份和年份,隐藏了日期选项 我已经成功地实现了这一点,但只是通过将wholedate字段重新创建为自定义字段,但我想知道是否可以自定义日期模块提供的日期字段 下面是我表格的屏幕截图: 如何创建自定义日期字段: function my_webform_form_alter(&$form, &$form_state) { if
function my_webform_form_alter(&$form, &$form_state) {
if (isset($form['#node']->webform) && $form['#node']->uuid == '00b20537-d5ce-45c2-af37-150c9e73b96d') {
//$form['submitted']['date']['#type'] = 'hidden';
$form['ggg'] = array(
'#type' => 'date_select',
'#title' => 'Date',
'#date_format' => 'm/Y',
'#default_value' => date('Y-m-d')
);
}
}
我尝试过其他方法来隐藏字段组件,但到目前为止似乎没有任何效果。我想知道是否需要实现一个不同于alterhook(正在使用的那个)的钩子
关于如何实现这一点的任何建议?一个可能的解决方案是将日期组件的
日期
字段转换为隐藏的
字段,而不是选择
字段类型。这可以通过为该字段添加#进程回调并更改数据来实现
function YOURMODULE_form_alter(&$form, &$form_state, $form_id)
{
// Your logic here depending which form to alter
// ...
// Add #process for the component with key name 'date'
$form['submitted']['date']['#process'][] = 'YOURMODULE_process_date';
}
function YOURMODULE_process_date(&$element)
{
// change type to hidden
$element['day']['#type'] = 'hidden';
// set value to first day of the month
$element['day']['#value'] = '1';
return $element;
}
一种可能的解决方案是将日期组件的day
字段转换为hidden
字段,而不是select
字段类型。这可以通过为该字段添加#进程回调并更改数据来实现
function YOURMODULE_form_alter(&$form, &$form_state, $form_id)
{
// Your logic here depending which form to alter
// ...
// Add #process for the component with key name 'date'
$form['submitted']['date']['#process'][] = 'YOURMODULE_process_date';
}
function YOURMODULE_process_date(&$element)
{
// change type to hidden
$element['day']['#type'] = 'hidden';
// set value to first day of the month
$element['day']['#value'] = '1';
return $element;
}
Webform现在允许隐藏日期的日期、月份或年份。有关详细信息,请参阅。Webform现在允许隐藏日期的日期、月份或年份。有关详细信息,请参阅。我认为在表单中创建日期字段的过程中,您只需指定月份和年份。默认情况下,它收集年、月、日、小时和分钟。您可以取消选中除年和月之外的所有项目,我认为这将解决您的问题。如果会,请告诉我。这是创建内容类型时的一个很好的解决方案。将日期组件添加到WebForm时,这些配置选项不可用。在configuration->regional->date time->format with only month and year中创建新的自定义日期格式如何?你能在你的“#type”键中调用它吗?不,在向webfromOk添加新组件时不会选择它。我对Drupal也很陌生。但我看到你已经得到了别人的正确答案,你已经找到了解决问题的方法!我为您感到宽慰:)我认为在表单中创建日期字段的过程中,您只需指定月份和年份。默认情况下,它收集年、月、日、小时和分钟。您可以取消选中除年和月之外的所有项目,我认为这将解决您的问题。如果会,请告诉我。这是创建内容类型时的一个很好的解决方案。将日期组件添加到WebForm时,这些配置选项不可用。在configuration->regional->date time->format with only month and year中创建新的自定义日期格式如何?你能在你的“#type”键中调用它吗?不,在向webfromOk添加新组件时不会选择它。我对Drupal也很陌生。但我看到你已经得到了别人的正确答案,你已经找到了解决问题的方法!我替你松了一口气:)是的,正是我在找的是的,正是我在找的