Yii2 ActiveForm TextField Number Max

Yii2 ActiveForm TextField Number Max

我有如下字段

<?= $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, you can format your input using the mask option to tell it how many digits to allow and in which sequence see the demos HERE

<?= $form->field($model, 'phone')->widget(\yii\widgets\MaskedInput::className(), [
    'mask' => '999-999-9999',
]) ?>

除了上述解决方案之外,您还可以选择使用自定义验证选项在模型中对此进行验证。

模型中 phone 的规则应类似于

[['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.');
    }
}

尝试类型编号 -> 'type'=>'number', 'min' => 1, 'max' => 999