Sugar CRM CE 6.5 Форма за контакти. Как да промените валидирането на полето за имейл

Мисля, че наскоро се случиха някои глобални промени в протоколите за адресиране на електронна поща. Сега имаме нов набор от знаци, разрешени в имейл адресите.

Например в Испания имаме знак „ñ“ и това вече е разрешено в имейл адреса, например mañ[email protected]

Проблемът, който имам със SugarCE (версия 6.5.9), е, че има валидиране в полето email1 за контакти, което не позволява съхраняването на този символ и при запазване на формуляра дава грешка „невалидна стойност“.

Някой знае ли къде в изходния код е тази функция за валидиране, за да мога да я променя?

Благодаря!

--актуализация--

намерих нещо за валидиране, както каза Чад в include/SugarEmailAddress/SugarEmailAddress.php, но не мога да накарам моя знак ñ да валидира.

Моля, помогнете ми да променя този код според изискванията:

//bug 40068, According to rules in page 6 of apps.ietf.org/rfc/rfc3696.html#sec-3,
//allowed special characters ! # $ % & ' * + - / = ? ^ _ ` . { | } ~ in local part 
var $regex = "/^(?:['\.\-\+&#!\$\*=\?\^_`\{\}~\/\w]+)@(?:(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|\w+(?:[\.-]*\w+)*(?:\.[\w-]{2,})+)\$/";

person Jack Casas    schedule 18.09.2013    source източник
comment
Кодът за валидиране, който търсите, вероятно е в include/SugarEmailAddress/SugarEmailAddress.php - Това е мястото, където е по-голямата част от тежката работа с имейл адреса.   -  person Chad Hutchins    schedule 19.09.2013


Отговори (1)


Има и проверка на javascript.

Регулярният израз на PHP се дефинира два пъти - което изглежда съвсем нормално при SugarCRM:

SugarEmailAddress/SugarEmailAddress.php
include/SugarEmailAddress/SugarEmailAddress.php

Замених регулярния израз с това:

var $regex = '/^((?!\s).)*@.*?\.[A-Z]{2,6}$/i';

Което не е перфектно, но работи достатъчно добре за мен. Така че можем да съхраняваме имейл адреси поне чрез REST API.

Валидирането на javascript също присъства на две места:

include/javascript/sugar_3.js
jssource/src_files/include/javascript/sugar_3.js

Замених и двата регулярни израза там с горния:

OLD 1 : /^\s*[\w.%+\-&'#!\$\*=\?\^_`\{\}~\/]+@([A-Z0-9-]+\.)*[A-Z0-9-]+\.[\w-]{2,}\s*$/i
OLD 2 : /^.*<[A-Z0-9._%+\-&'#!\$\*=\?\^_`\{\}~]+?@([A-Z0-9-]+\.)*[A-Z0-9-]+\.[\w-]{2,}>\s*$/i

Сега можем да съхраняваме IDN имейл адреси и адреси, които имат UTF-8 знаци в локални части.

Това не е идеалното решение, но работи за мен. Може би работи и за вас.

person Alexander Finger    schedule 27.02.2014