Skip to content

Commit

Permalink
artık parametre gönderiliyor
Browse files Browse the repository at this point in the history
  • Loading branch information
Ahmet committed Sep 21, 2021
1 parent a052592 commit c104be7
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 17 deletions.
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# v1.0.3
- Artık kurala parametre atanabiliyor. [Detaylar](Readme.md#parametre-gönderme)
# v1.0.1
- Opsiyonel alanlar için uyarı verilmeyecek.
- Opsiyonel olup, boş olan alanlara kural belirtilmişse ilgili kuraldan hata mesajı döndürme düzeltildi.
-
- Opsiyonel olup, boş olan alanlara kural belirtilmişse ilgili kuraldan hata mesajı döndürme düzeltildi.
17 changes: 17 additions & 0 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
- [Kurulum Ve Kural Tanımlama](#kurulum-ve-kural-tanımlama)
- [Kurulum](#kurulum)
- [Kural Tanımlama](#kural-tanımlama)
- [Parametre Gönderme](#parametre-gönderme)
# Doğrulama Hakkında
Bu doğrulama paketi, size kolay bir şekilde formları doğrulamanıza olanak sağlar. Basit mantık üzerinde işleyişi yatıyor. Kuralı tanımla, kuralı nesneye tanıt ve kuralı kullan şeklindedir.

Expand Down Expand Up @@ -119,5 +120,21 @@ $validation->setFields($_POST)->setRules(
]
)->make();

$validation->getAllFields();
```

# Parametre Gönderme
Kurala parametre atanabiliyor. Ama öncesinde ilgili kuralın `__construct` yöntemi tanımlı olmalı. Onun dışında herhangi bir eklemeye ihtiyaç duymuyor.
```php
$validation = new ahmetbarut\Validation\Validate();

$validation->setFields($_POST)->setRules(
[
"id" => ["required", new Max(50)],
"name" => ["string", "required"],
"date" => ["date", "required"],
]
)->make();

$validation->getAllFields();
```
37 changes: 22 additions & 15 deletions src/Validate.php
Original file line number Diff line number Diff line change
Expand Up @@ -97,30 +97,37 @@ public function make()
// Burda ilk önce kuralları döngüye koyuyoruz.

foreach ($this->rules as $key => $rule) {

// Burdaki 2. döngü ise, kurallar birden fazla olabilmesinden dolayı 2. döngüye ihtiyaç oluyor
// Burdaki döngü de ilgili alana ait kuralları dönecek.
for ($counter = 0; $counter < count($rule); $counter++) {

// Kural sınıfını çağırır.
$getRuleClass = (new static::$ruleClass[$rule[$counter]]);

// Uygulanmış olan arayüzdeki check yöntemine erişip parametreleri çalıştırır ve sonucu alır
// Kural false dönerse başarısız olarak işaretlenir.

if (array_key_exists($key, $this->fields)) {
if (in_array("required", $this->rules[$key])) {
if (false === $getRuleClass->check($key, $this->fields[$key])) {
array_push_key($fails, $key, $getRuleClass->message());
}
} else /* (!in_array("required", $this->rules[$key])) */ {
if (false === $getRuleClass->check($key, $this->fields[$key])) {
array_push_key($fails, $key, $getRuleClass->message());
}
if (is_object($rule[$counter])) {
$getRuleClass = $rule[$counter];
} else {
// Kural sınıfını çağırır.
$getRuleClass = (new static::$ruleClass[$rule[$counter]]);
}
// $getRuleClass->check($rule[$counter])
if (!array_key_exists($key, $this->fields) && in_array("required", $rule)) {
array_push_key($fails, $key, $getRuleClass->message());
}

if (array_key_exists($key, $this->fields) && in_array("required", $rule)) {
if (false === $getRuleClass->check($key, $this->fields[$key])) {
array_push_key($fails, $key, $getRuleClass->message());
}
}

if (!in_array('required', $this->rules[$key]) && !empty($this->fields[$key])) {
if (false === $getRuleClass->check($key, $this->fields[$key])) {
array_push_key($fails, $key, $getRuleClass->message());
}
}
}
}
if (!empty($fails)) {
http_response_code(422);
return $fails;
}
return true;
Expand Down
23 changes: 23 additions & 0 deletions src/Validation/Rules/Test.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

namespace ahmetbarut\Validation\Validation\Rules;

use ahmetbarut\Validation\Validation\Rule;

class Test implements Rule
{
public function __construct(protected $limit)
{

}

public function check($attr, $value): bool
{
return false;
}

public function message(): string
{
return "deneme test ediliyor. : {$this->limit}";
}
}

0 comments on commit c104be7

Please sign in to comment.