1

我正在使用 Yii 框架,我有 3 个电话号码输入的表格。我将它拆分为这种格式(XXX-XXX-XXXX),每次输入减号。
我想在用户更改/传递所有 3 个字段后对其进行验证,如果它无效则给出一条错误消息。我想以相同的顺序保存它并将其拆分回相同的格式。

这是我的代码示例。

    <?php echo $form->labelEx($model,'phone'); ?>

<?php echo $form->textField($model,'phone[0]'); ?>
<?php echo $form->textField($model,'phone[1]'); ?>
<?php echo $form->textField($model,'phone[2]'); ?>

我怎样才能做到这一点?

4

1 回答 1

1

您可以在控制器上验证输入并在需要时添加错误:

// ...
$validator = new CRegularExpressionValidator;
$validator->pattern = '/^[0-9]{3}\-[0-9]{3}\-[0-9]{3}/';
if ( !$validator->validate( $model->phone[0] ) ) // Do this for all of your phone fields!
{
    // add error if not added yet: $model->addError( ... );
}
if ( $model->validate( null, false ) ) // notice the 2nd argument!
{
    // ...
}

或者您可以使用几乎相同的代码在模型类中定义自己的验证器(我相信这是更好的选择)。

于 2012-06-12T19:59:01.733 回答