2012-06-12 49 views
1

我正在使用Yii框架,我有3个输入的电话号码的形式。我将它分割为这种格式(XXX-XXX-XXXX) 每输入一个负号。
我想验证它,在用户更改/传递所有3个字段,并给出一个错误消息,如果它是无效的。 我想用相同的顺序保存它,并将其分割回相同的格式。收集多个输入与yii框架上的一个验证

这是我的代码的例子。

<?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]'); ?> 

我该怎么做?

回答

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! 
{ 
    // ... 
} 

或者你可以在模型类用漂亮的同一代码中定义自己的验证(这是更好的选择,我相信)。

+0

但我必须先加入3个领域。我怎样才能做到这一点? – Dar

+0

我已经在那里发表评论,但是...... –

+0

您必须对每个字段进行此验证检查。你不必加入值(不知道你的字段是什么:字段数组或者每个字段都有自己的名字)。如果您的电话字段是数组,则在模型中创建验证器并在数组中循环。如果电话字段的名称不同(例如它们不是数组),则在控制器上定义验证并仅添加一次错误(上升标志或某物)。 –