1

私は Yii フレームワークを使用しており、電話番号を 3 つ入力するフォームがあります。この形式(XXX-XXX-XXXX)に分割して、マイナスで分割するたびに入力します。
ユーザーが変更した後に検証したい/3つのフィールドすべてを渡し、有効でない場合は1つのエラーメッセージを表示します。同じ順序で保存し、分割して同じ形式に戻したい。

これは私のコードの例です。

    <?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 に答える