Это потому, что вам нужно предоставить шаблон, по которому он будет проверять URL, так как вы называете validation.url
полными опциями, которые вы должны передать
{
"pattern": /^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])/i,
"message": "Name must be a url.",
"enableIDN": false,
"skipOnEmpty": 1
}
enableIDN
:процесс проверки должен учитывать IDN (интернационализированные доменные имена).
, если вы добавляете console.log(options);
в начале функции url
в файл yii.validation.js
, а затем заходите в любую форму, где у вас естьполе URL, обычно добавляемое с правилом внутри модели в виде URL-адреса, например, если в модели есть поле website
, правило должно выглядеть как [['website'],'url']
, затем, нажав кнопку подтверждения с пустыми вводами, вы увидите console.log(options)
вывод аналогичен приведенному выше, который адаптируется с помощью основных правил проверки.
Поэтому измените код на
function validateDynamicField() {
$('#my-form').yiiActiveForm('add', {
id: 'link',
name: 'link',
container: '.field-link',
input: '#link',
error: '.help-block',
enableAjaxValidation: true,
validate: function (attribute, value, messages, deferred, $form) {
yii.validation.required(value, messages, {
"message": "Name be blank bug."
});
yii.validation.url(value, messages, {
"pattern": /^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])/i,
"message": "Name must be a url.",
"enableIDN": false,
"skipOnEmpty": 1
});
}
});
}