Laravel y Tempus Dominus, un plugin javascript para escoger fecha y hora

Para escoger fechas en una página web no hace falta plugins, con código HTML es suficiente. Solo hay que poner un type=date:

    <div class="col-md-4">
        <label for="fecha" class="form-label">{{ __("Fecha") }}</label>
        <input type="date" id="fecha" name="fecha" class="form-control" aria-label="{{__("Fecha")}}" value="{{ old('fecha', $fecha) }}">
    </div>

Sin embargo, cuando es necesario tambien escoger una hora nos vemos obligados a usar un plugin como «Tempus Dominus» que nos deja escoger fecha y hora.

Para usarlo en Laravel vamos a enlazarlo en la cabecera de la página, junto con su traducción (locales), los estilos (css) y la libreria popper que es necesaria.

    <script src="{{ asset('popper.min.js')}}"></script>
    <script src="{{ asset('tempus-dominus-master/dist/js/tempus-dominus.min.js')}}"></script>
    <script src="{{ asset('tempus-dominus-master/dist/locales/es.js')}}"></script>
    <link href="{{ asset('tempus-dominus-master/dist/css/tempus-dominus.min.css') }}" rel="stylesheet"/>

Aquí voy a hacer una pequeña aclaración, para poder usar las traducciones he tenido que editar el archivo y dejar solo la constante «localization», por ejemplo en el caso del español, catalán, inglés y francés lo tenéis aquí ya modificado

Una vez enlazado en la cabecera lo presentaremos así en el HTML

    <div class="col-md-4">
        <label for="fecha" class="form-label">{{ __("Fecha") }}</label>
        <div class="input-group log-event" id="fechaDiv" data-td-target-input="nearest" data-td-target-toggle="nearest">
            <input id="fecha" type="text" class="form-control" data-td-target="#fechaDiv">
            <span class="input-group-text" data-td-target="#fechaDiv" data-td-toggle="datetimepicker">
                <i class="fas fa-calendar"></i>
            </span>
        </div>
    </div>

Y lo inicializaremos en javascript así

const datetimepicker1 = new tempusDominus.TempusDominus(document.getElementById('fechaDiv'),{
    localization: localization //nuestra constante en el archivo modificado de la cabecera
    ...
});

datetimepicker1.dates.setValue(tempusDominus.DateTime.convert(new Date()));

En el caso que debamos inicializar el plugin con una fecha que venga del PHP en lugar del javascript, cambiaremos la última línea con una variable de PHP que contenga un objeto Carbon, en los modelos es automático, por ejemplo, cambiaríamos la última línea por:

datetimepicker1.dates.setValue(tempusDominus.DateTime.convert( new Date('{{ $row->fecha->format("Y-m-d H:i:s") }}') ));

dónde «$row» es un registro de de la base de datos.

Recordar que hay que señalizarlo en el modelo:

protected $dates = ['fecha'];

Si no trabajamos con un modelo podemos obtener un objeto carbon directamente

use Carbon\Carbon;
...
class EjemploController extends Controller {

    public function index(Request $reques) {
        ...
        $fecha = Carbon::now();

Y hasta aquí llegamos