yii2 - Как проверить ввод, не маскируя значение в правилах?

Мне пришлось проверить часть входного значения, исключая значение vask, с помощью ajax, в настоящее время он берет все содержимое, которое находится в поле 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.'
],

поэтому мне нужно знать, могу ли я что-то добавить в форму, чтобы игнорировать значение маски, или изменить параметры правил.


person André Walker    schedule 14.11.2017    source источник
comment
Это может помочь stackoverflow.com/questions/28857604/   -  person mrateb    schedule 14.11.2017
comment
это не тот же вопрос, я отредактировал вопрос, чтобы объяснить свои сомнения   -  person André Walker    schedule 14.11.2017


Ответы (1)


Я решил свою проблему, добавив в правила строку:

['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.: Еще раз извините за мой английский.

person André Walker    schedule 17.11.2017