mablae/datetimepicker-bundle
mablae/datetimepicker-bundle is a Symfony bundle that simplifies adding a JavaScript date and time picker to your forms. It provides reusable form types and asset integration for quick, minimal-configuration datetime selection in templates.
Architecture fit. Mislabeled by the intake framing: this is mablae/datetimepicker-bundle, a Symfony bundle, not a Laravel package. It ships three things — a Symfony Form Type, a Twig form theme block that emits data-* attributes, and a bundled copy of the Eonasdan Bootstrap DateTimePicker JS/CSS. Its value is realized only inside Symfony's Forms + Twig + DI container triad. In a Laravel codebase none of those seams exist: no bundle registration, no form-type extension points, no Twig form themes in the same sense. Architecture fit for Laravel is poor; for a legacy Symfony 3.x/4.x app already on Bootstrap 3 and jQuery, fit is acceptable but dated.
Integration feasibility. Low as a Composer dependency in Laravel. The realistic extractable artifact is the pattern: a text input carrying data-format / data-locale / picker options, initialized on DOMContentLoaded, submitting one canonical string the server parses with an explicit format. That pattern is 30–60 lines to reimplement as a Blade component plus a date_format validation rule. Treat the repo as a reference implementation, not an install.
Technical risk. High, and concentrated in ownership rather than runtime.
Resources/public publishing conventions; Laravel Vite/Mix will not discover these assets, so any port is a manual copy into resources/js / resources/css.Key questions.
<input type="datetime-local"> or Symfony UX?Stack fit. Laravel: no. Do not attempt to install or bridge this bundle — pulling symfony/form and Twig form theming into Laravel's container costs more than writing the component from scratch and leaves a permanent architectural wart. Symfony 3.x/4.x on Bootstrap 3/jQuery, internal admin forms: yes, with isolation. Symfony 5+: verify constraints first and assume incompatibility until proven otherwise.
Migration path. Two viable paths, and a TPM should pick one explicitly rather than let engineering drift:
datetime-local), normalize to one ISO-8601 wire format, validate with date_format, store UTC, render in the user's timezone.App\Form\Type\DateTimePickerType that extends or composes the bundle's type, and reference only your wrapper in forms and templates. This makes the eventual swap to Symfony UX a single-file change and contains the abandonment blast radius.Compatibility. Highest risk sits at the framework boundary (Symfony Form/DI version), then at the front-end boundary (Bootstrap 3 + jQuery + Moment), then at build tooling (Assetic-era publishing vs. Vite/Mix). Validate all three before committing; a green prototype on one does not imply the others.
Sequencing.
Y-m-d H:i:s as the only accepted server input; define where UTC↔local conversion happens. Do this before any UI work.old() repopulation after validation failure, and server-side rejection of malformed strings.Maintenance. The dominant cost, and it is entirely yours. With 1 star and 0 dependents there is no upstream to inherit fixes from; pinning the version is the only defensible posture, and pinning means you own every future incompatibility with PHP, Symfony, Bootstrap, or a CSP policy. Estimate this as a small but permanent tax versus a one-time 1–2 day build savings on day one — the trade only looks favorable if the surface is genuinely throwaway.
Support. Effectively none. No ecosystem for bug triage, no security advisory path, no community answer when a picker breaks in one browser. Escalation is "an engineer reads the source," which is fine for a 500-line wrapper and not fine for anything with a stated uptime or compliance expectation. Set stakeholder expectation accordingly: this is borrowed code, not a supported component.
Scaling. Runtime scale is a non-issue — it is a client-side widget. Organizational scale is the real concern: without a single own-your-wrapper policy, teams will each hand-initialize pickers differently, duplicate assets, drift on date formats, and produce inconsistent backend validation. Standardize on one component, one wire format, one timezone convention before a second team touches dates.
Failure modes to monitor.
date_format rejecting it, producing a validation loop users cannot escape.Ramp-up. Front-end engineer replicating the picker behavior: low — hours, not days. Engineer forcing the Symfony bundle to work outside Symfony: high, and the effort is unrecoverable if the decision is later reversed. The asymmetry is the whole argument: take the pattern, leave the package. Recommended TPM position — reject as a Laravel dependency, cite it as the reference contract, adopt only in a legacy Symfony/Bootstrap 3 admin context behind an internal wrapper, and log a dated migration note to native inputs or Symfony UX.
How can I help you explore Laravel packages today?