簡體   English   中英

yii2-如何在不掩蓋規則值的情況下驗證輸入?

[英]yii2 - How to validate an input without masking the value on rules?

我不得不通過ajax驗證不包括vask值的部分歸因值,當前他接受了example.defesaserecursos.com.br(VALUE + MASK)字段中的所有內容。 我要選擇沒有遮罩的值。

PS:我正在使用'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],

PS:再次抱歉我的英語。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM