2012-06-12 76 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

您必須對每個字段進行此驗證檢查。你不必加入值(不知道你的字段是什麼:字段數組或者每個字段都有自己的名字)。如果您的電話字段是數組,則在模型中創建驗證器並在數組中循環。如果電話字段的名稱不同(例如它們不是數組),則在控制器上定義驗證並僅添加一次錯誤(上升標誌或某物)。 –