产品表中的自定义日期时间列被覆盖

问题描述:

我在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值。 你也应该验证输入是有效的日期。

+0

我更新了我的问题。您提到验证输入是其有效日期。我在哪里可以做到这一点? – 0range