Правило валидации для домена без протокола существует?
Правило валидации для домена без протокола существует?
Собственно сабж, нужно, чтобы реагировал на example.org и валидировал такой формат
Re: Правило валидации для домена без протокола существует?
Код: Выделить всё
/**
* @return array
*/
public function rules()
{
return [
...
['yourUrlAttribute', 'url', 'defaultScheme' => 'http'],
...
];
}
Re: Правило валидации для домена без протокола существует?
Можно еще добавить для русских url
Должен ли процесс проверки учитывать IDN (интернационализированные доменные имена). По умолчанию используется значение false, означающее, что проверка URL-адресов, содержащих IDN, всегда будет неудачной. Обратите внимание, что для использования проверки IDN необходимо установить и включить расширение intl PHP, в противном случае возникнет исключение. (c) Документация
Код: Выделить всё
'enableIDN' => true
Re: Правило валидации для домена без протокола существует?
это я знаю, но работает не так как мне нужноUsick писал(а): ↑2020.01.15, 12:35https://yiiframework.com.ua/ru/doc/guid ... ators/#urlКод: Выделить всё
/** * @return array */ public function rules() { return [ ... ['yourUrlAttribute', 'url', 'defaultScheme' => 'http'], ... ]; }
Re: Правило валидации для домена без протокола существует?
Данный валидатор с параметром 'defaultScheme' => 'http' добавляет http:// к валидируемому атрибуту если у него нет URI схемы. Соответственно адрес example.org пройдет валидацию, а это и требовалось исходя из вашего первого сообщения в этой теме.
Единственный нюанс в том, что после валидации значение атрибута будет http://example.org, но
Единственный нюанс в том, что после валидации значение атрибута будет http://example.org, но
Если это критично, то в методе модели afterValidate() можно его (http://) убрать....это уже совсем другая история. (c) «Следствие вели… с Леонидом Каневским»
Re: Правило валидации для домена без протокола существует?
ради этого и создавалась это тема, чтобы такой фигни не происходилоUsick писал(а): ↑2020.01.16, 15:36
Единственный нюанс в том, что после валидации значение атрибута будет http://example.org
Re: Правило валидации для домена без протокола существует?
Код: Выделить всё
public function afterValidate()
{
$this->yourUrlAttribute = mb_substr($this->yourUrlAttribute, mb_strpos($this->yourUrlAttribute, '://') + 3);
parent::afterValidate();
}