2016-07-13 3 views
0

В моем приложении Yii2 я пытаюсь проверить поле, которое я использую для ввода имени пользователя, используя специальный метод проверки, который проверяет, имеют ли это поле пробелы.Yii2 подтвердите имя пользователя

class SomeModel extends Model 
{ 
    public $username; 
    public $email; 
    public $password; 

    public function rules() 
    { 
    return 
    [ 
     // Other rules 
    [ 
      [ 
       'username', 
       'password', 
      ], 
      function ($attribute, $params) 
      { 
       if (preg_replace('/\s+/', '', $this->attribute)) { 
        $this->addError($attribute, 'No white spaces allowed!'); 
       } 

      }, 
     ], 
    ], 
    } 

Проблема, которая не работает. Записи сохраняются с пробелами.

По мнению это поле:

<?= $form->field($model, 'username')->textInput(['class' => 'form-control', 'autocomplete' => 'off', 'placeholder' => 'Username'])->label(FALSE); ?> 
+0

Вы пробовали [фильтр] (http://www.yiiframework.com/doc-2.0/guide-tutorial-core-validators. html # filter) – dod29

+0

изменить 'user_username' на' username' like ' field ($ model, 'username') -> textInput (['class' => 'form-control', 'autocomplete' => 'off', ' 'placeholder' => 'Username']) -> label (FALSE); ?> ' – vishuB

+0

вы хотите выбросить ошибку, когда имя пользователя или пароль содержат пробелы? Или вы хотите заменить белые пробелы? –

ответ

1
class SomeModel extends Model 
{ 
    public $username; 
    public $email; 
    public $password; 

    public function rules() 
    { 
    return 
    [ 
     // Other rules 
    [ 
      [ 
       'username', 
       'password', 
      ], 
      function ($attribute, $params) 
      { 
       //returns true/false (preg_replace returns the string with replaced matched regex) 
       if (preg_match('/\s+/',$this->attribute)) { 
        $this->addError($attribute, 'No white spaces allowed!'); 
       } 

      }, 
     ], 
    ], 
    } 
+0

Метод прав, но я не думаю, что это так, как я пишу Проверка. Я пробовал другие методы, такие как «фильтр», с вашей функцией и редактировать другие правила, в которых появилось поле «имя пользователя». Я уверен, что выполняю операции в поле имени пользователя (я разместил часть кода на мой взгляд). Но я не знаю, почему это не подтверждается. – giovaZ

+0

Есть ли у вас проверка правильности? –

+0

Также вы можете показать, как вы используете метод validate? –

Смежные вопросы