eange08 เขียน: ↑03/02/2025 11:09 am
Please share the code you used to resolve the issue accurately.
retrieving event data from database in model
โค้ด: เลือกทั้งหมด
public function getItem($id = null)
{
$id = (!empty($id)) ? $id : (int) $this->getState('event.id');
if ($id <= 0) {
return null;
}
$db = Factory::getContainer()->get('DatabaseDriver');
$query = $db->getQuery(true);
$query->select('*')->from($db->quoteName('tools_calendar_events'))
->where($db->quoteName('id') . ' = ' . (int) $id);
$db->setQuery($query);
$item = $db->loadObject();
if ($item) {
$item->event_start_date = (new DateTime($item->event_start_date))->format('d-M-Y h:i A');
$item->event_end_date = (new DateTime($item->event_end_date))->format('d-M-Y h:i A');
}
if I display event data in alert box, in "edit.php"
โค้ด: เลือกทั้งหมด
$formData = $this->form->getData();
$startDate = $formData->get('event_start_date');
$endDate = $formData->get('event_end_date');
Factory::getApplication()->enqueueMessage('Start Date: ' . $startDate, 'message');
Factory::getApplication()->enqueueMessage('End Date: ' . $endDate, 'message');
The result is like
โค้ด: เลือกทั้งหมด
Start Date: 07-Jan-2025 11:17 PM
End Date: 07-Jan-2025 11:17 PM

- event data result.PNG (10.24 KiB) Viewed 2275 times
But it is not displaying in the form input box, so I tried to add the value with JS codes in edit.php, <script> tag.
I also tested with alert box.
โค้ด: เลือกทั้งหมด
var startDateField = document.querySelector('[name="jform[event_start_date]"]');
startDateField.value = '<?php echo $startDate; ?>';
alert('<?php echo $startDate; ?>');
It fills the start date input field with today date, not with actual event date
But in that alert box, it displays date time value correctly.
js - alert box result

- alert box result.PNG (10.11 KiB) Viewed 2275 times
But in the form input, the result is today date

- today date time value.PNG (11.56 KiB) Viewed 2275 times
In form xml file, event.xml file
โค้ด: เลือกทั้งหมด
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset name="event">
<field
name="id"
type="hidden"
label="JGLOBAL_FIELD_ID"
description="JGLOBAL_FIELD_ID_DESC"
/>
<field
name="event_title"
type="text"
hint="ENTER_EVENT_TITLE"
label="EVENT_TITLE"
required="true"
maxlength="100"
/>
<field
name="event_description"
type="text"
label="EVENT_DESCRIPTION"
hint="ENTER_EVENT_DESCRIPTION"
required="true"
maxlength="255"
/>
<field
name="event_type_id"
type="sql"
label="EVENT_TYPE"
hint='SELECT_EVENT_TYPE'
required="true"
query="SELECT id AS value, event_type_name AS text FROM tools_calendar_event_types WHERE state = 1 ORDER BY event_type_name ASC"
key_field="value"
value_field="text"
>
<option value="">SELECT_EVENT_TYPE</option>
</field>
<field
name="event_start_date"
type="calendar"
label="START_DATE"
hint="ENTER_EVENT_START_DATE"
required="true"
showtime="true"
timeformat="12"
filter="server_utc"
format="%d-%b-%Y %H:%M"
/>
<field
name="event_end_date"
type="calendar"
hint="ENTER_EVENT_END_DATE"
label="END_DATE"
required="true"
showtime="true"
timeformat="12"
filter="server_utc"
format="%d-%b-%Y %H:%M"
/>
</fieldset>
</form>