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

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

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

Сообщение user »

Собственно сабж, нужно, чтобы реагировал на example.org и валидировал такой формат
Usick
Сообщения: 42
Зарегистрирован: 2017.04.11, 12:07

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

Сообщение Usick »

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

    /**
     * @return array
     */
    public function rules()
    {
        return [
	    ...
            ['yourUrlAttribute', 'url', 'defaultScheme' => 'http'],
            ...
        ];
    }
https://yiiframework.com.ua/ru/doc/guid ... ators/#url
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

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

Сообщение unknownby »

Можно еще добавить для русских url

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

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

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

Сообщение 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
это я знаю, но работает не так как мне нужно
Usick
Сообщения: 42
Зарегистрирован: 2017.04.11, 12:07

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

Сообщение Usick »

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

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

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

Сообщение user »

Usick писал(а): 2020.01.16, 15:36
Единственный нюанс в том, что после валидации значение атрибута будет http://example.org
ради этого и создавалась это тема, чтобы такой фигни не происходило
Usick
Сообщения: 42
Зарегистрирован: 2017.04.11, 12:07

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

Сообщение Usick »

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

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