kmasdo Posted January 24, 2012 Share Posted January 24, 2012 Hola, He creado un campo personalizado (marcado como necesario desde el cátalogo) para almacenar una fecha desde un calendario utilizando el componente datepicker de JQuery. Para ello he modificado el product.tpl (utilizo el tema prestashop new theme) . El campo creado se llama Fecha de Reserva . El código permite seleccionar una fecha desde el calendario y almacenarla en el campo Fecha de Reserva . El problema surge cuándo, después de seleccionar la fecha del calendario y actualizar el valor del campo de Reserva (guardando su valor, botón guardar), se desea añadir el producto al carrito. En este momento se muestra el error " Por favor, rellene todos los campos obligatorios". Mirando el contenido de la tabla customized_data se comprueba que el valor no ha sido actualizado (a pesar de mostrarse en el campo y de pulsar el botón guardar). En cambio, si al mismo campo personalizado se le elimina la marca de campo necesario, la operativa del proceso es correcta, almacenándose su valor y permintiendo que el producto se añada al carrito. Os pongo el código de product.tpl, para ver si podeís decirme que puede estar pasando. {if $product->customizable} <ul class="idTabs clearfix"> <li><a style="cursor: pointer">{l s='Product customization'}</a></li> </ul> <div class="customization_block"> <form method="post" action="{$customizationFormTarget}" enctype="multipart/form-data" id="customizationForm"> <p> <img src="{$img_dir}icon/infos.gif" alt="Informations" /> {l s='After saving your customized product, remember to add it to your cart.'} {if $product->uploadable_files}<br />{l s='Allowed file formats are: GIF, JPG, PNG'}{/if} </p> {if $product->uploadable_files|intval} <h2>{l s='Pictures'}</h2> <ul id="uploadable_files"> {counter start=0 assign='customizationField'} {foreach from=$customizationFields item='field' name='customizationFields'} {if $field.type == 0} <li class="customizationUploadLine{if $field.required} required{/if}">{assign var='key' value='pictures_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field} {if isset($pictures.$key)}<div class="customizationUploadBrowse"> <img src="{$pic_dir}{$pictures.$key}_small" alt="" /> <a href="{* $link->getProductDeletePictureLink($product,{$field.id_customization_field})*}" title="{l s='Delete'}" > <img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" class="customization_delete_icon" width="11" height="13" /> </a> </div>{/if} <div class="customizationUploadBrowse"><input type="file" name="file{$field.id_customization_field}" id="img{$customizationField}" class="customization_block_input {if isset($pictures.$key)}filled{/if}" />{if $field.required}<sup>*</sup>{/if} <div class="customizationUploadBrowseDescription">{if !empty($field.name)}{$field.name}{else}{l s='Please select an image file from your hard drive'}{/if}</div></div> </li> {counter} {/if} {/foreach} </ul> {/if} <div class="clear"></div> {if $product->text_fields|intval} <h2>{l s='Texts'}</h2> <h3><ul id="text_fields"> {counter start=0 assign='customizationField'} {foreach from=$customizationFields item='field' name='customizationFields'} ***************** INICIO DEL CODIGO MODIFICADO ************************************ {if $field.type == 1} {if $field.name != 'Fecha de Reserva'} <li class="customizationUploadLine{if $field.required} required{/if}"> {assign var='key' value='textFields_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field} {if !empty($field.name)}{$field.name}{/if}{if $field.required}<sup>*</sup>{/if} <input type="text" name="textField{$field.id_customization_field}" id="textField{$customizationField}" class="customization_block_input" value="{if isset($textFields.$key)}{$textFields.$key|stripslashes}{/if}"/> </li> {/if} <!-- Campos tipo fecha Aqui es donde introduzco el calendario --> {if $field.name == 'Fecha de Reserva'} <link type="text/css" href="../cal/jquery-ui-1.8.17.custom.css" rel="Stylesheet" /> <script type="text/javascript" src="../cal/jquery-1.7.1.min.js"></script> <script type="text/javascript" src="../cal/jquery-ui-1.8.17.custom.min.js"></script> <li class="customizationUploadLine{if $field.required} required{/if}">{assign var='key' value='textFields_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field} {if !empty($field.name)}{$field.name}{/if}{if $field.required}<sup>*</sup>{/if} <script> var $jq = jQuery.noConflict(); $(function() { $jq( "#textField{$customizationField}" ).datepicker({ showOn: "both", buttonImage: "../cal/calendar.gif", buttonImageOnly: true, minDate: 0, maxDate: "+1Y +10D", dateFormat: "dd/mm/yy" });}); </script> <input type="text" name="textField{$field.id_customization_field}" id="textField{$customizationField}" class="customization_block_input" value='{if isset($textFields.$key)}{$textFields.$key|stripslashes}{/if}' size="10" readonly/> </li> {/if} {counter} {/if} {/foreach} </ul></h3> **************************************** FIN DEL CODIGO MODIFICADO ************************ {/if} <p style="clear: left;" id="customizedDatas"> <input type="hidden" name="quantityBackup" id="quantityBackup" value="" /> <input type="hidden" name="submitCustomizedDatas" value="1" /> <input type="button" class="button" value="{l s='Save'}" onclick="javascript:saveCustomization()" /> <span id="ajax-loader" style="display:none"><img src="{$img_ps_dir}loader.gif" alt="loader" /></span> </p> Saludos. 1 Link to comment Share on other sites More sharing options...
shacker Posted January 27, 2012 Share Posted January 27, 2012 el problema seguro esta en que hace mal la validacion. revisa la clase tools para ver como validas la fecha Link to comment Share on other sites More sharing options...
kmasdo Posted January 30, 2012 Author Share Posted January 30, 2012 el problema seguro esta en que hace mal la validacion. revisa la clase tools para ver como validas la fecha Gracias. Voy a probarlo. Saludos, Link to comment Share on other sites More sharing options...
jhaxey Posted March 6, 2013 Share Posted March 6, 2013 Conseguiste solucionarlo ? .. Link to comment Share on other sites More sharing options...
Recommended Posts