Bilişim dünyasına kaliteli, özgün ve Türkçe içerikler kazandırmayı hedefleyen bir platform..

friends friends friends

Yii2 Framework Model Rules Validation

Model dosyasında yapılabilecek bazı validation rule ayarları:

String validation

public function rules()
{
	return [
		//karakter sınırı yok ise
        [['postContent', 'postKeywords'], 'string'],

		//max 25 karakter
		[['postTitle', 'postTitleSeo'], 'string', 'max' => 25],

		//max 255 karakter
		[['postDescription'], 'string', 'max' => 255],
        
        //karakter uzunluğu 4 ve 24 arası
        ['username', 'string', 'length' => [4, 24]],
        
	];
}

Integer validation

public function rules()
{
    return [
        [['postID'], 'integer'],
    ];
}

Required validation

public function rules()
{
    return [
        [['postID', 'postTitle'], 'required'],
        //ya da message
       [['postTitle'], 'required','message'=>'Bu alan zorunlu!'],
    ];
}

Validation password gibi bazı durumlarda sadece kayıt ekleme esnasında bu alanlar zorunlu olsun, güncelleme esnasında zorunlu olmasın istersek scenario kullanırız.

public function rules()
{
    return [
        ['postTitle', 'required', 'on' => 'create']
    ];
}

ardından SiteConroller.php içinde aşağıdaki eklemeleri yapmamız gerekli.

public function actionCreate()
{
     $model = new Posts();
     $model->scenario = 'create';
     ...
}

Uniqe validation

Tabloya tekrar kayıt girmek istemiyor ve özel mesaj göstermek istiyorsak message kullanırız.

public function rules()
{
    return [
		[['postTitle'], 'unique'],
		//ya da
        [['postTitle'], 'unique','message'=>'{value} yazı başlığı daha önce kullanılmış'],//"Yii2 Türkçe dersler" yazı başlığı zaten var
		//ya da
		[['postTitle'], 'unique','message'=>'{attribute}  daha önce kullanılmış'],//postTitle daha önce kullanılmış
    ];
}

Tabloya şartlı olarak tekrar kayıt girmek istemiyorsak targetAttribute kullanırız.

public function rules()
{
    return [
		[['postTitle'], 'unique', 'targetAttribute' => ['postTitle','categoryID']],
        //postTitle ve categoryID beraber benzersiz olur, yalnızca postTitle hata mesajı alır
 
        [['postTitle', 'categoryID'], 'unique', 'targetAttribute' => ['postTitle', 'categoryID']],
        //postTitle ve categoryID beraber benzersiz olur, beraber hata mesajı alırlar
    ];
}

Link(Url) validation

Linkin başında otomatik olarak http olduğunu kabul etmemiz için defaultScheme kullanırız.

public function rules()
{
    return [
        [['website'], 'url'],
		//ya da
		[['website'], 'url', 'defaultScheme' => 'http'],
    ];
}

Filter

[['field1','field2'],'filter','filter'=>'\yii\helpers\HtmlPurifier::process']

Email validation

public function rules()
{
    return [
        [['email'], 'email'],
    ];
}

Trim

public function rules()
{
    return [
		[['username', 'email'], 'trim'],
		//kayıt göndermeden önce sağ ve soldaki boşlukları siler
    ];
}

Match

public function rules()
{
    return [
		 ['username', 'match', 'pattern' => '/^[a-z]\w*$/i']
		//username için regex yazılabilir, sadece harflerden oluşur
    ];
}

Range

[['Format'], 'in', 'range' => ['MD', 'HTML']],

Captcha validation

public function rules()
{
    return [
		[
			['verificationCode', 'captcha'],
		]
    ];
}

Custom validation

Kendimize göre bazı fonksiyonlarda ekleyebiliriz, Örn GSM numarası:

public function rules()
{
    return [
		[
			[['gsm'], 'GSMvalidation'],#GSM  örn :(05XX) XXX-XXXX
		]
    ];
}

public function GSMvalidation($attribute, $params)
{
	//bunu kullanırken inputlarda formatter js mask kullanmalısınız
	if(preg_match("/\([0-9]{4}\) [0-9]{3}-[0-9]{4}$/", $this->gsm)) {
	  return true;
	}else{
		$this->addError($attribute, '(05XX) XXX-XXXX benzeri bir gsm numarası kullanmalısınız!');
	}
}

required when

['authorID', 'required', 'when' => function($model) {
				
   return \backend\models\Posts::find()->where(['postID' => 3])->count()>0;
}],
Yii2 Framework Model Rules Validation Trim email validation link validation Url validation string validation integer validation double validation custom validation GSM validation Telephone validation Range Format Filter
0 Beğeni
Yii2 Framework
Önceki Yazı

Yii2 Framework Pagination

21 Ekim 2020 tarihinde yayınlandı.
Sonraki Yazı

Yii2 Framework Sort And Pagination in Model Search

21 Ekim 2020 tarihinde yayınlandı.
arrow