Yii: Подкладываем маску в поле формы или используем CMaskedTextField Widget
Для маскирования поля формы заменяем TextField на CMaskedTextField, и устанавливаем свойства маскирования. Это удобно для ограничения вводимых пользователем данных в поля формы. Мы использовали это удобство в приложении "Spanking Subscription".
В виде заменяем:
<?php echo $form->textField($model,'phone',array('size'=>20,'maxlength'=>11)); ?>на виджет:
<?php $this->widget('CMaskedTextField', array( 'model' => $model, 'attribute' => 'phone', 'mask' => '79999999999', //'charMap' => array('.'=>'[\.]' , ','=>'[,]'), 'htmlOptions' => array('size' => 15, 'maxlength'=>11) )); ?> <i>пример: "<b>79151234567</b>"</i>
В модели:
public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array('name, phone, email, city_id', 'required'), array('phone', 'numerical'), array('email, phone', 'unique'), ... array('phone', 'length', 'min'=>11, 'max'=>11), //array('phone', 'match', 'pattern'=>'/^([+]?[0-9 ]+)$/'), ... ); }
Другой пример для даты рождения (источник - yiismart.wordpress.com) в модели:
public function rules()
{
return array(
array('name, dob', 'required'),
array('name', 'length', 'max'=>'108'),
array('dob', 'date', 'format'=>'dd/MM/yyyy'),
array('name,dob','safe','on'=>'search'),
);
}В виде:
<div>
<?
echo $form->labelEx($model, 'Date of birth');
$this->widget('CMaskedTextField', array(
'mask' => '99/99/9999',
'placeholder' => 'x',
'completed' => 'function(){alert(1);}',
'model' => $model,
'name' => 'dob',
));
?>
</div>
Leave a Comment