Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 18.02.2015 09:31:42

Validation домены в зоне рф.

Здравствуйте. Подскажите пожалуйста, как можно провести проверку URL доменов, находящихся в зоне РФ?

Не в сети

#2 19.02.2015 06:29:21

Re: Validation домены в зоне рф.

Нашёл решение. Пишу, если кому-то понадобится.
Значит, я пытался проверить корректность введённого адреса сайта с помощью active_url. Но IDN (интернациональные доменные имена), а в частности домены в зоне ".рф" не проверялись. Решил проблему следующим образом:
Нашёл на GITHUB библиотеку, которая преобразует IDN. Вписал в composer.json следующую строку в раздел "require":
"mabrahamde/idna-converter": "dev-master"
Затем выполнил в консоли такую команду: composer update
А потом в классе, расширяющем стандартный Validator переопределил метод validateActiveUrl таким образом:

public function validateActiveUrl($attribute, $value){
        # Конвертируем URL в ASCII
        $idn = new idna_convert(['idn_version'=>2008]);
        
        return
            parent::validateActiveUrl( $attribute, $idn->encode($value) );
    }

P.S. Класс, расширяющий Validator у меня лежит в папке app/extensions, которую я создал ранее.

Не в сети

#3 19.02.2015 12:58:31

Re: Validation домены в зоне рф.

Дмитрий пишет:

библиотеку, которая преобразует IDN

http://php.net/manual/ru/ref.intl.idn.php

Не в сети

#4 19.02.2015 15:36:34

Re: Validation домены в зоне рф.

Wide пишет:
Дмитрий пишет:

библиотеку, которая преобразует IDN

http://php.net/manual/ru/ref.intl.idn.php

Wide, спасибо. Только к сожалению не на всех хостингах установлено это дополнение PECL.

Не в сети

#5 19.02.2015 16:53:23

Re: Validation домены в зоне рф.

Правило active_url использует функцию checkdnsrr. Если нужно проверить только формат ссылки, используй правило url или regex.

Переопределять метод нет смысла, можно сразу передать обработанное значение.

Не в сети

#6 19.02.2015 17:04:04

Re: Validation домены в зоне рф.

Да, я знаю, что правило active_url использует функцию checkdnsrr. Поэтому именно её я и использовал.
У меня ссылка на сайт пишется в базу, поэтому, если предварительно преобразовать её, то в базу запишется преобразованный вариант, хотя конечно можно и дополнительную переменную создать для сохранения исходного значения.

Не в сети

#7 09.11.2015 20:41:26

Re: Validation домены в зоне рф.

Дмитрий пишет:

"mabrahamde/idna-converter": "dev-master"

А дополнительно ничего нигде не надо прописывать?

$IDN  =  new  idna_convert();
dd($IDN->encode('домен.рф'));

выдает
Class 'App\Http\Controllers\idna_convert' not found

Изменено anzim (09.11.2015 20:42:52)

Не в сети

#8 19.11.2015 21:52:35

Re: Validation домены в зоне рф.

получилось с etechnika/idna-convert

use Etechnika\IdnaConvert\IdnaConvert as IDNA;

IDNA::encodeString($url)

Не в сети

Подвал раздела