Страница 1 из 1

Правило валидации для домена без протокола существует?

Добавлено: 2020.01.15, 00:24
user
Собственно сабж, нужно, чтобы реагировал на example.org и валидировал такой формат

Re: Правило валидации для домена без протокола существует?

Добавлено: 2020.01.15, 12:35
Usick

Код: Выделить всё

    /**
     * @return array
     */
    public function rules()
    {
        return [
	    ...
            ['yourUrlAttribute', 'url', 'defaultScheme' => 'http'],
            ...
        ];
    }
https://yiiframework.com.ua/ru/doc/guid ... ators/#url

Re: Правило валидации для домена без протокола существует?

Добавлено: 2020.01.15, 13:10
unknownby
Можно еще добавить для русских url

Код: Выделить всё

'enableIDN' => true
Должен ли процесс проверки учитывать IDN (интернационализированные доменные имена). По умолчанию используется значение false, означающее, что проверка URL-адресов, содержащих IDN, всегда будет неудачной. Обратите внимание, что для использования проверки IDN необходимо установить и включить расширение intl PHP, в противном случае возникнет исключение. (c) Документация

Re: Правило валидации для домена без протокола существует?

Добавлено: 2020.01.15, 18:23
user
Usick писал(а): 2020.01.15, 12:35

Код: Выделить всё

    /**
     * @return array
     */
    public function rules()
    {
        return [
	    ...
            ['yourUrlAttribute', 'url', 'defaultScheme' => 'http'],
            ...
        ];
    }
https://yiiframework.com.ua/ru/doc/guid ... ators/#url
это я знаю, но работает не так как мне нужно

Re: Правило валидации для домена без протокола существует?

Добавлено: 2020.01.16, 15:36
Usick
Данный валидатор с параметром 'defaultScheme' => 'http' добавляет http:// к валидируемому атрибуту если у него нет URI схемы. Соответственно адрес example.org пройдет валидацию, а это и требовалось исходя из вашего первого сообщения в этой теме.

Единственный нюанс в том, что после валидации значение атрибута будет http://example.org, но
...это уже совсем другая история. (c) «Следствие вели… с Леонидом Каневским»
Если это критично, то в методе модели afterValidate() можно его (http://) убрать.

Re: Правило валидации для домена без протокола существует?

Добавлено: 2020.01.16, 19:08
user
Usick писал(а): 2020.01.16, 15:36
Единственный нюанс в том, что после валидации значение атрибута будет http://example.org
ради этого и создавалась это тема, чтобы такой фигни не происходило

Re: Правило валидации для домена без протокола существует?

Добавлено: 2020.01.16, 20:05
Usick

Код: Выделить всё

public function afterValidate()
{
    $this->yourUrlAttribute = mb_substr($this->yourUrlAttribute, mb_strpos($this->yourUrlAttribute, '://') + 3);
    parent::afterValidate();
}
Думаю на этом тему можно закрывать?