yii2 - 如何在不屏蔽规则值的情况下验证输入?
yii2 - How to validate an input without masking the value on rules?
我不得不通过 ajax 验证输入值的一部分,不包括 vask 值,目前他获取了字段 example.defesaserecursos.com.br(VALUE+MASK) 中的所有内容。我只想选择不带掩码的值。
P.S.: 我正在使用 'enableClientValidation' => false,
我使用这个代码:
<?= $form->field($model, 'subdominio', [
'inputTemplate' => '<div class="form-material floating">{input} <label class="floating-label">Subdomínio (Seu link de divulgação para os clientes)</label></div>',
])->textInput(['maxlength' => 80,'minlength' => 40, 'autocomplete' => 'off', ])->widget(MaskedInput::className(), [
'mask' => 'aaaa[aaaaaaaaaaa]\.\d\e\f\e\s\a\s\e\r\e\c\u\r\s\o\s\.\c\o\m\.\b\r',
'clientOptions' => [
'alias' => 'decimal',
/*'removeMaskOnSubmit' => true,*/
],
'options' => [
'class'=> 'form-control',
]
,
])->label(false) ?>
但我需要验证是否已经存在具有此值的子域,但我保存时没有掩码值。
我在规则上使用此代码:
['subdominio', 'unique',
'targetClass' => 'app\models\Empresa',
'targetAttribute' => 'subdominio',
'message' => 'Esse link já está em uso.'
],
所以我需要知道我是否可以在表单上放置一些东西来忽略掩码值,或者我是否可以更改规则参数。
我解决了我的问题添加到规则行:
['subdominio', 'validaSUBDOMINIO'],
我在同一个文件中创建了删除“.defesaserecuros.com.br”的函数
function validaSUBDOMINIO() {
if (strlen($this->subdominio) > 15){
$this->subdominio = substr($this->subdominio, 0, strpos($this->subdominio, '.'));
}
}
现在规则中的下一行将起作用,因为不再有“.defesaserecursos.com.br”。
['subdominio', 'unique',
'targetClass' => 'app\models\Empresa',
'targetAttribute' => 'subdominio',
'message' => 'Esse link já está em uso.'
],
['subdominio', 'string', 'min' => 4],
['subdominio', 'string', 'max' => 15],
P.S.: 再次为我的英语感到抱歉。
我不得不通过 ajax 验证输入值的一部分,不包括 vask 值,目前他获取了字段 example.defesaserecursos.com.br(VALUE+MASK) 中的所有内容。我只想选择不带掩码的值。
P.S.: 我正在使用 'enableClientValidation' => false,
我使用这个代码:
<?= $form->field($model, 'subdominio', [
'inputTemplate' => '<div class="form-material floating">{input} <label class="floating-label">Subdomínio (Seu link de divulgação para os clientes)</label></div>',
])->textInput(['maxlength' => 80,'minlength' => 40, 'autocomplete' => 'off', ])->widget(MaskedInput::className(), [
'mask' => 'aaaa[aaaaaaaaaaa]\.\d\e\f\e\s\a\s\e\r\e\c\u\r\s\o\s\.\c\o\m\.\b\r',
'clientOptions' => [
'alias' => 'decimal',
/*'removeMaskOnSubmit' => true,*/
],
'options' => [
'class'=> 'form-control',
]
,
])->label(false) ?>
但我需要验证是否已经存在具有此值的子域,但我保存时没有掩码值。
我在规则上使用此代码:
['subdominio', 'unique',
'targetClass' => 'app\models\Empresa',
'targetAttribute' => 'subdominio',
'message' => 'Esse link já está em uso.'
],
所以我需要知道我是否可以在表单上放置一些东西来忽略掩码值,或者我是否可以更改规则参数。
我解决了我的问题添加到规则行:
['subdominio', 'validaSUBDOMINIO'],
我在同一个文件中创建了删除“.defesaserecuros.com.br”的函数
function validaSUBDOMINIO() {
if (strlen($this->subdominio) > 15){
$this->subdominio = substr($this->subdominio, 0, strpos($this->subdominio, '.'));
}
}
现在规则中的下一行将起作用,因为不再有“.defesaserecursos.com.br”。
['subdominio', 'unique',
'targetClass' => 'app\models\Empresa',
'targetAttribute' => 'subdominio',
'message' => 'Esse link já está em uso.'
],
['subdominio', 'string', 'min' => 4],
['subdominio', 'string', 'max' => 15],
P.S.: 再次为我的英语感到抱歉。