Jump to content
  • 0
Ripe

How to disable DNI validation

Question

Hi all,

How can I disable validation for dni field? I have tried to remove 'dni' => 'isDniLite' from $fieldsValidate in /classes/Address.php on line 103 and made some experiment with isDniLite and isDni functions in /classes/Validate.php, but with no results. Field is still validated.

Can somebody know, how to completely disabled validation for this field?

Thanks a lot.

Share this post


Link to post
Share on other sites

14 answers to this question

Recommended Posts

  • 0

i have the same problem in version 1.4.2.5, i just want disable the validation of DNI field, some customers may want to leave it blank

i have tried this in validate.php class but it still validates the DNI field, please help...

static public function isDniLite($dni)
{
return true;
}

in the backoffice -> customers -> addresses -> set required fields
its nothing checked to be required

Share this post


Link to post
Share on other sites
  • 0

SOLVED for ver 1.4.2.5

in controllers/AddressController.php change the code at line 127

from:
if ($country->isNeedDni() AND (!Tools::getValue('dni') OR !Validate::isDniLite(Tools::getValue('dni'))))

to:
if ($country->isNeedDni() AND !Validate::isDniLite(Tools::getValue('dni')))

no need to update validate.php or address.php and now the customers can leave the DNI field blank

Share this post


Link to post
Share on other sites
  • 0

Was easier than expected, just go Shipping - Country - The country - Remove tax needed.

 

I use 1.4.6.2 and can't find "Remove tax needed". Stil waiting solution for not required DNI number .

 

Please help.

Share this post


Link to post
Share on other sites
  • 0

To disable DNI validation but still have the choice to display it or not in the address form by choosing if it's required or not for the country:

 

Step 1

open controllers/AuthController.php

 

find (around line 127)

if (Country::isNeedDniByCountryId($address->id_country) AND (!Tools::getValue('dni') OR !Validate::isDniLite(Tools::getValue('dni'))))
$this->errors[] = Tools::displayError('Identification number is incorrect or has already been used.');
  elseif (!Country::isNeedDniByCountryId($address->id_country))
$address->dni = NULL;

and disable it by replacing with

/*if (Country::isNeedDniByCountryId($address->id_country) AND (!Tools::getValue('dni') OR !Validate::isDniLite(Tools::getValue('dni'))))
$this->errors[] = Tools::displayError('Identification number is incorrect or has already been used.');
  elseif (!Country::isNeedDniByCountryId($address->id_country))
$address->dni = NULL;*/

 

Step 2

open controllers/AddressController.php

 

find (around line 123)

if ($country->isNeedDni() AND (!Tools::getValue('dni') OR !Validate::isDniLite(Tools::getValue('dni'))))
$this->errors[] = Tools::displayError('Identification number is incorrect or has already been used.');
  elseif (!$country->isNeedDni())
$address->dni = NULL;

 

and disable it by replacing with

/*if ($country->isNeedDni() AND (!Tools::getValue('dni') OR !Validate::isDniLite(Tools::getValue('dni'))))
$this->errors[] = Tools::displayError('Identification number is incorrect or has already been used.');
  elseif (!$country->isNeedDni())
$address->dni = NULL;*/

 

Tested on prestashop 1.4.7

 

I strongly recoomend to NOT delete any line in .php presta's files, but to comment them instead

Edited by studioneko

Share this post


Link to post
Share on other sites
  • 0

The Solution from Studioneko is also not working for me.

Prestashop: 1.5.1.0

 

I want to disable the validation but still showing it.

 

Any other clue?

 

THX a lot!

Share this post


Link to post
Share on other sites
  • 0

Here is what I have figured out with this issue:

 

I am on PS v1.5.2

 

In your BO "Localization > Countries" edit the country in question and disable "Need Tax identification number?". You can also set other field options in here in the "Address format:". However, this does not change the fields on registration page, it does change on the "Guest Checkout" page though, I can confirm that.

 

To get rid of the ""Need Tax identification number?" from the regiser page just modify "authentication.tpl" from the theme directory you are using. You can comment this section out with <!-- "section to be removed" -->

or set a style to hide it, e.g. <fieldset class="account_creation dni" style="display: none;">

 

You can also get rid of other fields form this page like ZIp code or "Receive special offers from our partners" etc. using the same method. Most of these are located twice in the "authentication.tpl" file, so be sure to comment the correct one, or just do both, I did and it works fine for me.

 

Hope this helps others...

Share this post


Link to post
Share on other sites
  • 0

Hello everyone, i know i will bump this post. But maybe someone reads my solution and can help the community.

 

This is my solution to delete DNI field in Address form:

 

Step 1:

 

Edit: /controllers/front/AuthController.php

 

Line 540

 

Comment the lines

if ($country->need_identification_number && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni')))) {
                    $this->errors[] = Tools::displayError('The identification number is incorrect or has already been used.');
                } elseif (!$country->need_identification_number) {
                    $$addresses_type->dni = null;
                }

Step 2:

 

Edit: /controllers/front/AddressController.php

 

Line 157

// Check country DNI
            if ($country->isNeedDni() && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni')))) {
                $this->errors[] = Tools::displayError('The identification number is incorrect or has already been used.');
            } elseif (!$country->isNeedDni()) {
                $address->dni = null;
            }

Step 3:

 

Edit: /themes/<theme_folder/ and comment:


		{if !$dniExist}
			<div class="required dni form-group unvisible">
				<label for="dni">{l s='Identification number'} <sup>*</sup></label>
				<input class="is_required form-control" data-validate="{$address_validation.dni.validate}" type="text" name="dni" id="dni" value="{if isset($smarty.post.dni)}{$smarty.post.dni}{else}{if isset($address->dni)}{$address->dni|escape:'html':'UTF-8'}{/if}{/if}" />
				<span class="form_info">{l s='DNI / NIF / NIE'}</span>
			</div>
		{/if}

Maybe you needs to comment DNI field in company option. I don't need company info, so i commented too. 

 

To comment in PHP, you can use /* CODE TO COMMENT */

To comment in TPL, you can use {* CODE TO COMMENT *}

 

Bye, and thanks for all.

Edited by DanielRomanMartinez

Share this post


Link to post
Share on other sites
  • 0

Thanks Daniel,

 

If I understood everything, as you modify some "global" parameters (controllers), you can not separate what you want to display on the shop you want if you work with multishop mode..

 

I am looking for a solution to require Company and SIRET fields for one shop (with B2B mode enabled) and hide those fields (with no require, of course) for the second shop (with B2B disabled)

 

It seems this is not yet possible in the latest version (I'm running 1.6.1.3)

 

Any idea someone ?

 

Thanks !

Share this post


Link to post
Share on other sites
  • 0
Lji    0

SOLVED for ver 1.4.2.5

 

in controllers/AddressController.php change the code at line 127

 

from:

if ($country->isNeedDni() AND (!Tools::getValue('dni') OR !Validate::isDniLite(Tools::getValue('dni'))))

 

to:

if ($country->isNeedDni() AND !Validate::isDniLite(Tools::getValue('dni')))

 

no need to update validate.php or address.php and now the customers can leave the DNI field blank

 

Great! Thanks a lot Faraon..

its old solution but works perfect also in 1.5.2.0 but, you should change it in AuthController.php only, B)

if you don´t want REQUIRED dni identification only for QUEST - without registration.

 

No more .tpl/php changes needed ! :rolleyes:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×