J'ai activé le module de base Datetime Range et il fonctionne à l'intérieur d'un type de contenu, à partir du BO, mais je veux l'utiliser dans un formulaire personnalisé. J'ai essayé :
$form['training_interval'] = [
'#type' => 'daterange',
'#required' => TRUE,
// '#default_value' => 'TODO',
];
et aussi daterange_default , datetime_range et toute valeur qui aurait pu être pertinente en donnant le code du module, mais rien ne s'affiche. Je dois avouer que je me sens bête ...
Le module Datetime Range fournit un nouveau type champ, 'daterange'. Le champ est un plugin qui fournit l'élément et la liste, les widgets et les formats.
L'élément et la liste sont ce qui est réellement attaché à une entité, en tant que champ de base ou champ configurable.
Le Widget est ce qui est utilisé sur le formulaire de modification d'entité.
Les formateurs sont utilisés à chaque sortie du champ, soit dans le cadre de l'entité parent elle-même, soit dans le cadre d'une vue.
Notez que j'ai mentionné entités et non formulaires. Le module Datetime Range ne fournit aucun nouvel élément de formulaire. Les Widgets eux-mêmes sont construits autour des éléments de base 'datetime' et 'datelist' (qui n'ont vraiment rien à voir avec le module Datetime; oui, cela est sérieusement déroutant).
Donc, si vous avez un formulaire personnalisé et que vous voulez une plage de dates, vous devrez le créer vous-même avec deux éléments 'datetime', puis avoir des règles de validation pour que cela se comporte comme vous le souhaitez.
Si vous devez créer un champ de plage de datetime dans un formulaire personnalisé:
Exemple:
Node::create(['field_dates' => ['value'=> '2018-02-02T12:12:12', 'end_value' => '2018-05-05T12:12:12'] ] );