У меня есть поля, как показано ниже
<?= $form->field($model, 'phone')
->textInput(['type' => 'number', 'maxlength' => 13])
->label('Phone')
?>
почему 'maxlength'
не работает? и как заставить работать?
спасибо перед
У меня есть поля, как показано ниже
<?= $form->field($model, 'phone')
->textInput(['type' => 'number', 'maxlength' => 13])
->label('Phone')
?>
почему 'maxlength'
не работает? и как заставить работать?
спасибо перед
Это не сработает, потому что вы используете type=>number
для поля ввода, вам нужно изменить его на type=>text
.
<?= $form->field($model, 'phone')
->textInput(['type' => 'text', 'maxlength' => 13])
->label('Phone')
?>
Глядя на ваш ввод, кажется, что вы делаете это, потому что вы не хотите, чтобы пользователь вводил что-либо, кроме чисел, для поля Phone
, Yii2
предоставляет вам очень хороший способ сделать это, т.е. yii\widgets\MaskedInput
, вы можете отформатировать свой ввод, используя параметр mask
, чтобы указать его сколько цифр разрешить и в какой последовательности см. демоверсии HERE
<?= $form->field($model, 'phone')->widget(\yii\widgets\MaskedInput::className(), [
'mask' => '999-999-9999',
]) ?>
Помимо решений, приведенных выше, вы также можете проверить это внутри своей модели, используя опцию пользовательской проверки.
Ваше правило для телефона внутри вашей модели должно выглядеть так
[['phone'],'PhoneLimit']
public function PhoneLimit($attribute)
{
if (!preg_match('/^[0-9]{13}$/', $this->$attribute)) {
$this->addError($attribute, 'Please provide digits only no more than 13.');
}
}
попробуйте для типа number -> 'type' => 'number', 'min' => 1, 'max' => 999
type=number
для поля ввода по какой-либо причине? - person Muhammad Omer Aslam   schedule 04.02.2018