在Core\Datetime\Element的Datetime.php中,我读到:
#date_date_callbacks: Array of optional callbacks for the date element.
Can be used to add a jQuery datepicker.什么意思?我应该如何从jQuery函数中添加一个呢?现在,我正在使用作为库包含的JS文件,但是我希望使我的自定义小部件更独立(我正在开发一个使用jQuery数据报警器来选择星期的定制小部件)。
发布于 2019-05-08 08:47:22
回调得到的第一个参数是$element,它本质上是呈现API概述中描述的呈现数组。例如,这意味着#date_date_callbacks回调可以使用类似于下面的代码。
function mymodule_date_callback($element, $form_state, $date) {
$element['date']['#attached']['library'][] = 'mymodule/mylibrary';
// Optionally, the callback can pass values to the JavaScript code.
$element['date']['#attached']['drupalSettings']['foo'] = 'bar';
}发布于 2022-06-13 10:01:00
检查日期时间类的正式文档后,它似乎调用了#date_date_callback数组中作为字符串传递的所有函数名(检查processDatetime函数)。
// Allows custom callbacks to alter the element.
if (!empty($element['#date_date_callbacks'])) {
foreach ($element['#date_date_callbacks'] as $callback) {
if (function_exists($callback)) {
$callback($element, $form_state, $date);
}
}
}回调函数接受三个参数$element (主元素数组)、$form_state (当前表单状态)和$date (日期对象)。因此,典型的情况是在模块中实现hook_form_alter()并在其中添加自定义回调。
/**
* Implements hook_form_alter().
*/
function custom_module_form_alter(&$form, &form_state, $form_id) {
..
$form['field_name']['...']['value']['#date_date_callbacks'][] = 'custom_module_date_date_custom_callback';
..
}
/**
* Implements custom date_date callback function.
*/
function custom_module_date_date_custom_callback(&$element, &form_state, $date) {
..
// Do whatever changes you want to do with $element or $form_state.
..
}请记住,$element和$form_state是在这里通过引用传递的。这是一个非常重要的步骤,它确保您在回调中所做的任何更改都是永久的,并传递给表单元素的最终呈现。
https://drupal.stackexchange.com/questions/280815
复制相似问题