[v2.x] Validation contains sorunu sorusu için;
NegaXY
PHP Developer
4 ay önce

Tamam anladığım kadarıyla Validation contains rule multiple part yazılmamış. bunu Validation Lib de kendim yazdım. Değişikliği de buraya ekleyeyim.

System/Libs/Validation:

protected function contains($data, $part)
{
$parts = explode("+", $part);

if (in_array($data, $parts))
{
return true;
}else{
return false;
}
}


Bu değişiklik sonrası Contains rule şu şekilde kullanılır bir hale geldi:

Validation::rule('field', 'label', 'contains,elma+armut+muz');
Validation::data('field', 'çilek');

if (Validation::isValid())
echo 'Form verileri doğrulandı';
else
echo 'Form verileri doğrulanamadı';


elma, armut, muz değerlerinden biri varsa true, farklı bir değer gelmişse false olacak şekilde düzenlenmiş oldu.

[v2.x] Validation contains sorunu sorusu için;
NegaXY
PHP Developer
4 ay önce

Cevap verdiğinizi geç gördüm.

doc/validation#dogrulama-kurallari url deki Validaton da contains örneğiniz üzerinden açıklayayım.

Validation::rule('field', 'label', 'contains,elma'); // ilgili alan 'elma' kelimesini içermelidir


Bu örneği SQL enum mantığı olarak algılıyorum. contains validation'ı Form select işlemi için uygulamayı düşünüyorum. Örneğin elma, armut, muz optionlarından biri seçilmeli. Kaynağa yapılan müdahale ile forma bunlardan başka data gelmesini engellemeyi planlıyorum.

Ancak contains çoklu kullanımını başaramadım ya da bu tek bir değer ile mi çalışıyor.

[v1.x] BaseController'da tanimlanmis olan bir datayi her sayfanin view'inde render edilirken tanimlama hakkinda sorusu için;
NegaXY
PHP Developer
7 ay önce

Ben bu işlemi şu şekilde yapıyorum.

BaseController.php :

namespace AppControllers;

use SystemKernelController;

class BaseController extends Controller
{
protected $pageData = [];

public function __construct()
{
$this->pageData['data_key'] = 'data_value';
}
}


Base Controller'da __construct ile Base Controller her çalıştığında çalışacak kod tanımlamalarını yapmış oluyorum.

Şimdi sırada Router ile tetiklenecek Controller ve Method tarafına geçersek,

HomeController.php :

namespace AppControllers;

use View;

class HomeController extends BaseController
{

public function index()
{
$this->pageData['title'] = 'title_value'; // Bu tanımlama Home içerisinden yapılıyor

View::render('index', $this->pageData); // extend edilen Base den pageData array View a gönderiliyor.
}
}


Önemli nokta HomeController'ın BaseController'dan extend edilmesi ve Base'de array data tanımlamalarını yaptığınız değişkeni $this ile Home da almak.

[v2.x] Multiple Upload [Çözüm] sorusu için;
NegaXY
PHP Developer
1 yıl önce

Neden önce for ile gönderilen array ayrılıp sonra images isimli bir array oluşturuluyor ve foreach ile Upload'a gönderiliyor konusunda bir açıklama yapayım.

Bir multiple upload post edildiğinde request ile gelen file'ı ekrana yazdırdığınızda dosyaların ayrı değil, name, tmp_name gibi anahtarlar altında her dosyanın verilerinin gruplandığını görürsünüz. Aşağıdaki gibi;


Array
(
[name] => Array
(
[0] => test-1.png
[1] => test-2.png
)
[type] => Array
(
[0] => image/png
[1] => image/png
)
[tmp_name] => Array
(
[0] => C:wamp64tmpphp2F0B.tmp
[1] => C:wamp64tmpphp2F0C.tmp
)
[error] => Array
(
[0] => 0
[1] => 0
)
[size] => Array
(
[0] => 41418
[1] => 22773
)
)


Yukarıdaki array verisini bu hali ile Upload kütüphanesine göndermek hata verecektir. Upload kütüphanesine Upload::file() ile tek bir dosyanın verilerini dizi olarak göndermemiz gerekiyor.

Bu nedenle elimizdeki diziyi önce her dosyanın verilerini kendi içinde gruplayacak şekilde parçalamamız, sonra da Upload kütüphanesine döngü ile göndermemiz gerekiyor. Kendi içinde grupladığımız ve türettiğimiz yeni $images dizisi aşağıdaki gibi bir çıktı üretecektir.


Array
(
[0] => Array
(
[name] => test-1.png
[type] => image/png
[tmp_name] => C:wamp64tmpphpB4C1.tmp
[error] => 0
[size] => 41418
)
[1] => Array
(
[name] => test-2.png
[type] => image/png
[tmp_name] => C:wamp64tmpphpB4C2.tmp
[error] => 0
[size] => 22773
)
)
NegaXY
PHP Developer

Sosyal