blackmountainsupply Posted August 9, 2013 Share Posted August 9, 2013 When a customer tries to add an address when registering or just adding a new address, it is coming up as an error. I think i have found out that the error is in validating the state when the save button is pushed. I have copied a screen shot of the error code below. I am running PS 1.5.4.1. If you want to see this page in real time just go to my site and try to register an address with your account. www.blackmtnsupply.com. Need help ASAP as this has shut down my site. Thanks in advance :-) [PrestaShopException] Validation function not found. isState at line 930 in file classes/ObjectModel.php 924. 925. // Check field validator 926. if (!empty($data['validate'])) 927. { 928. if (!method_exists('Validate', $data['validate'])) 929. throw new PrestaShopException('Validation function not found. '.$data['validate']); 930. 931. if (!empty($value) && !call_user_func(array('Validate', $data['validate']), $value)) 932. return 'Property '.get_class($this).'->'.$field.' is not valid'; 933. } 934. ObjectModelCore->validateField - [line 833 - classes/ObjectModel.php] - [2 Arguments] 827. continue;828. 829. if (is_array($this->update_fields) && empty($this->update_fields[$field]))830. continue;831. 832. $message = $this->validateField($field, $this->$field);833. if ($message !== true)834. {835. if ($die)836. throw new PrestaShopException($message);837. return $error_return ? $message : false; Argument [0]stateArgument [1] ObjectModelCore->validateFields - [line 265 - classes/ObjectModel.php] - [0 Argument] ObjectModelCore->getFields - [line 465 - classes/ObjectModel.php] - [0 Argument] ObjectModelCore->add - [line 170 - classes/Address.php] - [2 Arguments] AddressCore->add - [line 427 - classes/ObjectModel.php] - [2 Arguments] ObjectModelCore->save - [line 218 - controllers/front/AddressController.php] - [0 Argument] AddressControllerCore->processSubmitAddress - [line 107 - controllers/front/AddressController.php] - [0 Argument] AddressControllerCore->postProcess - [line 158 - classes/controller/Controller.php] - [0 Argument] ControllerCore->run - [line 349 - classes/Dispatcher.php] - [0 Argument] DispatcherCore->dispatch - [line 28 - index.php] - [0 Argument] Link to comment Share on other sites More sharing options...
NemoPS Posted August 10, 2013 Share Posted August 10, 2013 Well, isState doesn't exist, is your prestashop an upgraded version? Validate has "isStateIsoCode", but no "isState" Link to comment Share on other sites More sharing options...
blackmountainsupply Posted August 10, 2013 Author Share Posted August 10, 2013 Thanks for your reply Nemo. Yes I am running 1.5.4.1. I upgraded using the 1 click upgrade module in the back office. I have thought about re-installing but I don't want to lose all my work and start over building the site. Any suggestions on how I can fix this? Link to comment Share on other sites More sharing options...
NemoPS Posted August 10, 2013 Share Posted August 10, 2013 There is no need to reinstall, try getting the default files first. Download a fresh version, then copy over ALL folders except config, to your prestashop folder. This will eventually kill all broken files. Be sure you backup your installation, of course! Link to comment Share on other sites More sharing options...
blackmountainsupply Posted August 10, 2013 Author Share Posted August 10, 2013 Thanks for your quick response Nemo. Can you give me alittle bit of direction on how to do that. I will download the latest version from Presta Shop. Then in my cpanel do I open each file, upload and the un-zip each file? Or is there a better way. I have never re-placed files in my cpanel so if you could give me some direction on what is the best way I would appreciate it. Thanks again for all your help!!!!!!! Link to comment Share on other sites More sharing options...
NemoPS Posted August 10, 2013 Share Posted August 10, 2013 You can simply select all folders but config, and upload them over FTP replacing the originals Link to comment Share on other sites More sharing options...
blackmountainsupply Posted August 10, 2013 Author Share Posted August 10, 2013 Thanks for your help Nemo. I will give this a try. A huge thanks to this forum for all the help and insight!!!!! Link to comment Share on other sites More sharing options...
pinkierthanblue Posted August 11, 2014 Share Posted August 11, 2014 Help. My prestashop was working fine before. But I realized there's an error yesterday when filling up address. This has affected my customer's checkout experience. They can't complete checkout because the address can't be filled. Please refer to attached images : The fields shown are incomplete. Where are the rest of the missing fields? I've tried modifying address.tpl referring to other forum posts but nothing seems to work. Help! Here's my address.tpl. Can you find any bug in the code? {* * 2007-2013 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2013 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} <script type="text/javascript"> // <![CDATA[ var idSelectedCountry = {if isset($smarty.post.id_state)}{$smarty.post.id_state|intval}{else}{if isset($address->id_state)}{$address->id_state|intval}{else}false{/if}{/if}; var countries = new Array(); var countriesNeedIDNumber = new Array(); var countriesNeedZipCode = new Array(); {foreach from=$countries item='country'} {if isset($country.states) && $country.contains_states} countries[{$country.id_country|intval}] = new Array(); {foreach from=$country.states item='state' name='states'} countries[{$country.id_country|intval}].push({ldelim}'id' : '{$state.id_state}', 'name' : '{$state.name|addslashes}'{rdelim}); {/foreach} {/if} {if $country.need_identification_number} countriesNeedIDNumber.push({$country.id_country|intval}); {/if} {if isset($country.need_zip_code)} countriesNeedZipCode[{$country.id_country|intval}] = {$country.need_zip_code}; {/if} {/foreach} $(function(){ldelim} $('.id_state option[value={if isset($smarty.post.id_state)}{$smarty.post.id_state|intval}{else}{if isset($address->id_state)}{$address->id_state|intval}{/if}{/if}]').attr('selected', true); {rdelim}); {literal} $(document).ready(function() { $('#company').on('input',function(){ vat_number(); }); vat_number(); function vat_number() { if ($('#company').val() != '') $('#vat_number').show(); else $('#vat_number').hide(); } }); {/literal} //]]> </script> {capture name=path}{l s='Your addresses'}{/capture} <h1 class="page-title">{l s='Your addresses'}</h1> <label> {if isset($id_address) && (isset($smarty.post.alias) || isset($address->alias))} {l s='Modify address'} {if isset($smarty.post.alias)} "{$smarty.post.alias}" {else} {if isset($address->alias)}"{$address->alias|escape:'html'}"{/if} {/if} {else} {l s='To add a new address, please fill out the form below.'} {/if} </label> {include file="$tpl_dir./errors.tpl"} <p class="required" style="text-align: right;"><sup>*</sup> {l s='Required field'}</p> <form action="{$link->getPageLink('address', true)|escape:'html'}" method="post" class="std" id="add_address"> <fieldset> <h3>{if isset($id_address)}{l s='Your address'}{else}{l s='New address'}{/if}</h3> <p class="required text dni"> <label for="dni">{l s='Identification number'} <sup>*</sup></label> <input type="text" class="text" name="dni" id="dni" value="{if isset($smarty.post.dni)}{$smarty.post.dni}{else}{if isset($address->dni)}{$address->dni|escape:'html'}{/if}{/if}" /> <span class="form_info">{l s='DNI / NIF / NIE'}</span> </p> {assign var="stateExist" value="false"} {assign var="postCodeExist" value="false"} {foreach from=$ordered_adr_fields item=field_name} {if $field_name eq 'company'} <p class="text"> <label for="company">{l s='Company'}</label> <input type="text" id="company" name="company" value="{if isset($smarty.post.company)}{$smarty.post.company}{else}{if isset($address->company)}{$address->company|escape:'html'}{/if}{/if}" /> </p> {/if} {if $field_name eq 'vat_number'} <div id="vat_area"> <div id="vat_number"> <p class="text"> <label for="vat_number">{l s='VAT number'}</label> <input type="text" class="text" name="vat_number" value="{if isset($smarty.post.vat_number)}{$smarty.post.vat_number}{else}{if isset($address->vat_number)}{$address->vat_number|escape:'html'}{/if}{/if}" /> </p> </div> </div> {/if} {if $field_name eq 'firstname'} <p class="required text"> <label for="firstname">{l s='First name'} <sup>*</sup></label> <input type="text" name="firstname" id="firstname" value="{if isset($smarty.post.firstname)}{$smarty.post.firstname}{else}{if isset($address->firstname)}{$address->firstname|escape:'html'}{/if}{/if}" /> </p> {/if} {if $field_name eq 'lastname'} <p class="required text"> <label for="lastname">{l s='Last name'} <sup>*</sup></label> <input type="text" id="lastname" name="lastname" value="{if isset($smarty.post.lastname)}{$smarty.post.lastname}{else}{if isset($address->lastname)}{$address->lastname|escape:'html'}{/if}{/if}" /> </p> {/if} {if $field_name eq 'address1'} <p class="required text"> <label for="address1">{l s='Address'} <sup>*</sup></label> <input type="text" id="address1" name="address1" value="{if isset($smarty.post.address1)}{$smarty.post.address1}{else}{if isset($address->address1)}{$address->address1|escape:'html'}{/if}{/if}" /> </p> {/if} {if $field_name eq 'address2'} <p class="required text"> <label for="address2">{l s='Address (Line 2)'}</label> <input type="text" id="address2" name="address2" value="{if isset($smarty.post.address2)}{$smarty.post.address2}{else}{if isset($address->address2)}{$address->address2|escape:'html'}{/if}{/if}" /> </p> {/if} {if $field_name eq 'postcode'} {assign var="postCodeExist" value="true"} <p class="required postcode text"> <label for="postcode">{l s='Zip / Postal Code'} <sup>*</sup></label> <input type="text" id="postcode" name="postcode" value="{if isset($smarty.post.postcode)}{$smarty.post.postcode}{else}{if isset($address->postcode)}{$address->postcode|escape:'html'}{/if}{/if}" onkeyup="$('#postcode').val($('#postcode').val().toUpperCase());" /> </p> {/if} {if $field_name eq 'city'} <p class="required text"> <label for="city">{l s='City'} <sup>*</sup></label> <input type="text" name="city" id="city" value="{if isset($smarty.post.city)}{$smarty.post.city}{else}{if isset($address->city)}{$address->city|escape:'html'}{/if}{/if}" maxlength="64" /> </p> {* if customer hasn't update his layout address, country has to be verified but it's deprecated *} {/if} {if $field_name eq 'Country:name' || $field_name eq 'country'} <p class="required select"> <label for="id_country">{l s='Country'} <sup>*</sup></label> <select id="id_country" name="id_country">{$countries_list}</select> </p> {if $vatnumber_ajax_call} <script type="text/javascript"> var ajaxurl = '{$ajaxurl}'; {literal} $(document).ready(function(){ $('#id_country').change(function() { $.ajax({ type: "GET", url: ajaxurl+"vatnumber/ajax.php?id_country="+$('#id_country').val(), success: function(isApplicable){ if(isApplicable == "1") { $('#vat_area').show(); $('#vat_number').show(); } else { $('#vat_area').hide(); } } }); }); }); {/literal} </script> {/if} {/if} {if $field_name eq 'State:name'} {assign var="stateExist" value="true"} <p class="required id_state select"> <label for="id_state">{l s='State'} <sup>*</sup></label> <select name="id_state" id="id_state"> <option value="">-</option> </select> </p> {/if} {/foreach} {if $postCodeExist eq "false"} <p class="required postcode text hidden"> <label for="postcode">{l s='Zip / Postal Code'} <sup>*</sup></label> <input type="text" id="postcode" name="postcode" value="{if isset($smarty.post.postcode)}{$smarty.post.postcode}{else}{if isset($address->postcode)}{$address->postcode|escape:'html'}{/if}{/if}" onkeyup="$('#postcode').val($('#postcode').val().toUpperCase());" /> </p> {/if} {if $stateExist eq "false"} <p class="required id_state select"> <label for="id_state">{l s='State'} <sup>*</sup></label> <select name="id_state" id="id_state"> <option value="">-</option> </select> </p> {/if} <p class="textarea"> <label for="other">{l s='Additional information'}</label> <textarea id="other" name="other" cols="26" rows="3">{if isset($smarty.post.other)}{$smarty.post.other}{else}{if isset($address->other)}{$address->other|escape:'html'}{/if}{/if}</textarea> </p> {if isset($one_phone_at_least) && $one_phone_at_least} <p class="inline-infos required">{l s='You must register at least one phone number.'}</p> {/if} <p class="text"> <label for="phone">{l s='Home phone'}</label> <input type="text" id="phone" name="phone" value="{if isset($smarty.post.phone)}{$smarty.post.phone}{else}{if isset($address->phone)}{$address->phone|escape:'html'}{/if}{/if}" /> </p> <p class="{if isset($one_phone_at_least) && $one_phone_at_least}required {/if}text"> <label for="phone_mobile">{l s='Mobile phone'}{if isset($one_phone_at_least) && $one_phone_at_least} <sup>*</sup>{/if}</label> <input type="text" id="phone_mobile" name="phone_mobile" value="{if isset($smarty.post.phone_mobile)}{$smarty.post.phone_mobile}{else}{if isset($address->phone_mobile)}{$address->phone_mobile|escape:'html'}{/if}{/if}" /> </p> <p class="required text" id="adress_alias"> <label for="alias">{l s='Please assign an address title for future reference.'} <sup>*</sup></label> <input type="text" id="alias" name="alias" value="{if isset($smarty.post.alias)}{$smarty.post.alias}{else if isset($address->alias)}{$address->alias|escape:'html'}{elseif !$select_address}{l s='My address'}{/if}" /> </p> </fieldset> <p class="submit2"> {if isset($id_address)}<input type="hidden" name="id_address" value="{$id_address|intval}" />{/if} {if isset($back)}<input type="hidden" name="back" value="{$back}" />{/if} {if isset($mod)}<input type="hidden" name="mod" value="{$mod}" />{/if} {if isset($select_address)}<input type="hidden" name="select_address" value="{$select_address|intval}" />{/if} <input type="hidden" name="token" value="{$token}" /> <input type="submit" name="submitAddress" id="submitAddress" value="{l s='Save'}" class="button" /> </p> </form> Many2 thanks! 1 Link to comment Share on other sites More sharing options...
Recommended Posts