产品表中的自定义日期时间列被覆盖
问题描述:
我在cscart_products表中创建了DATETIME列,并在update.tpl中创建了相应的输入表单。 当我更新产品时,它第一次正常工作。但是,如果我在其他输入(例如产品名称)中进行了更改,则我创建的DATETIME列中的值将被覆盖为0.产品表中的自定义日期时间列被覆盖
产品表中的自定义STRING字段不会被覆盖,但只有这个DATETIME列。 任何想法为什么发生这种情况?先谢谢你。
下面是代码:
/backend/templates/products/update.tpl
<div class="control-group">
<label class="control-label" for="elm_date_avail_until_holder">{__("available_until")}:</label>
<div class="controls">
<div class="ty-calendar" style="position:relative;display:inline-block">
<input type="text" id="elm_date_avail_until_holder" name="product_data[avail_until]" class="cm-calendar" style="padding-left:24px;width: 105px !important;" value="{if $product_data.avail_until}{$product_data.avail_until|date_format:"`$date_format`"}{/if}" {$extra} size="12" />
<i class="icon-calendar cm-external-focus" style="position:absolute;top: 6px;left: 6px;"></i>
</div>
</div>
</div>
/controllers/backend/products.php
在($模式==“m_override “)
if (isset($product_data['avail_until'])) {
$product_data['avail_until'] = $product_data['avail_until'];
}
下
if (isset($product_data['avail_since'])) {
$product_data['avail_since'] = fn_parse_date($product_data['avail_since']);
}
在
'avail_until' => 'products_data',
下
'avail_since' => 'products_data',
和
elseif ($field == 'avail_until') {
$desc = 'available_until';
}
($模式==“m_update”)
elseif ($field == 'avail_since') {
$desc = 'available_since';
}
下
UPDATE
的日期格式update.tpl
{if $settings.Appearance.calendar_date_format == "month_first"}
{assign var="date_format" value="%m/%d/%Y %H:%M"}
{else}
{assign var="date_format" value="%Y/%m/%d %H:%M"}
{/if}
答
在update.tpl
模板,要格式化由你不提的格式添加日期:$date_format
。 $date_format
是什么?
因此,除非$date_format
以此格式YYYY-MM-DD HH:MM:SS
生成日期字符串,否则它将无法正确更新您的DATETIME值。 你也应该验证输入是有效的日期。
我更新了我的问题。您提到验证输入是其有效日期。我在哪里可以做到这一点? – 0range