Jump to content

Recommended Posts

Zdravím, potřeboval bych pomoci s formátem telefonu.

Zákazník si může zadat libovolný počet cifer u telefonu a objednávku dokončit. Někdy se stane, že zákazník vynechá číslo nebo omylem jedno přidá a ztěžuje nám to dopravu, kontrolovat u každé objednávky telefonní číslo je dost otrava.

Moje otázka je tedy, jak nastavit, aby zákazník mohl zadat pouze 9 cifer?

Děkuji,

Share this post


Link to post
Share on other sites
Posted (edited)

Verze Prestashopu ?

Upravuje se to ve Validation.php

Hledej funkci isPhoneNumber.

Zde se přidá podmínka 

if (strlen($number)==9){ return preg_match ....} else { return false;   }

 

celé to bude takto ./classic/Validation.php:

  public static function isPhoneNumber($number)
    {
      if (strlen($number)==9){
        return preg_match('/^[+0-9. ()\/-]*$/', $number);
      } else {
        return false;
      }
    }

Samozřejmě jde napsat i override, aby jsi o úpravu v případě aktualizace Prestashopu nepřišel.

 

Stačí tento kód uložit do složky ./override/classes/Validate.php

<?php

class Validate extends ValidateCore
{
    public static function isPhoneNumber($number)
    {
      if (strlen($number)==9){
        return preg_match('/^[+0-9. ()\/-]*$/', $number);
      } else {
        return false;
      }
    }
}

 

Edited by D. Tengler (see edit history)

Share this post


Link to post
Share on other sites

Změnil jsem to jak jsi napsal ale při vyplňování objednávky (v košíku) mi to hodilo error 500,

 

Prestashop verze 1.7.2.4

Share this post


Link to post
Share on other sites

Napsal jsem ti dvě možné verze.

Kterou jsi použil ?

 

Share this post


Link to post
Share on other sites

Tu první v ./classic/Validation.php, v override jsem soubor validate.php nenašel.

Share this post


Link to post
Share on other sites

🙂 ten druhý by jsi zkopíroval do txt souboru, uložil jako Validate.php a uložil do ovwrride/classes složky.

No, to nevadí.

Ještě bych tu funkci upravil např. takto:

public static function isPhoneNumber($number)
    {
        return (preg_match('/^[+0-9. ()-]*$/', $number) AND strlen($number) == 9);
    }

A ještě by bylo potřeba upravit funkci v validate.js.

Otevři si soubor ./js/validate.js

Najdi :

function validate_isPhoneNumber(s)
{
	var reg = /^[+0-9. ()-]+$/;
	return reg.test(s);
}

a uprav na:

function validate_isPhoneNumber(s)
{
	var reg = /^[+0-9. ()-]+$/;
	return (reg.test(s) && s.length == 9);
}

 

Share this post


Link to post
Share on other sites

Tohle by ti mělo 100% fungovat.

Nezapomeň vymazat cache.

Share this post


Link to post
Share on other sites

Zkusil jsem a udělal vše ale jakmile se změní kod v ./classic/Validate.php, tak to háže chybu 500

Share this post


Link to post
Share on other sites

Nástroje => výkon

Drž se podle obrázku a vymaž cache.

Musíš taky i ve tvém prohlížeči vymazat cache, nejen v administraci !!!

obrazek.png.3c516cd157674c2cf3000f7b25002fa6.png

  • Thanks 1

Share this post


Link to post
Share on other sites

Kdyžtak mi pošleš do PM přístupy na FTP a do administrace a já ti na oplátku pošlu číslo účtu 😉

Share this post


Link to post
Share on other sites

Před chvilkou jsem to nahodil na dev eshop a výsledek vidíš na obrázku.

Zadal jsem pouze 8 čísel.

Share this post


Link to post
Share on other sites

Ok, tak jsem to udělal přesně podle návodu a sice mi to neháže error, za to se víceméně nic nestalo, dál to ignoruje počet čísel, vymazal jsem cache jak v prestashopu, tak i v prohlížeči.

Share this post


Link to post
Share on other sites

A jak je možné, že to u mně funguje na stejné verzi Prestashopu?

Je úprava v obou souborech ?

Validate.php a validate.js ?

 

Share this post


Link to post
Share on other sites

Používáš vestavěnou pokladnu nebo nějaký one page checkout ?

Share this post


Link to post
Share on other sites

Samozřejmě, že to máš blbě.

To je tak, když se nečtou celé příspěvky.

tento příspěvek

Validate.php

máš:

public static function isPhoneNumber($number)
    {
      if (strlen($number)==9){
        return preg_match('/^[+0-9. ()\/-]*$/', $number);
      } else {
        return false;
      }
    }

 má být:

public static function isPhoneNumber($number)
    {
        return (preg_match('/^[+0-9. ()-]*$/', $number) AND strlen($number) == 9);
    }

 

  • Like 1

Share this post


Link to post
Share on other sites

Jo, super, už to funguje, netuším, kde jsem dělal chybu, ten druhý způsob co jsi poslal už funguje, zkusil jsem ten první ale nešel, ten druhý jsem taky zkoušel a taky nešel, teď najednou ano, příště budu pozornější,

děkuju za tvou pomoc!:)

  • Like 1

Share this post


Link to post
Share on other sites

Njn.

Můžeš dát like kliknutím na šedé srdce pod příspěvky 😉

  • Like 1

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

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More