MuratAydogan compact()
bir PHP fonksiyonudur, Laravel ile ilgisi yok. Associative array dediğimiz anahtar ve değerden (key => value) oluşan dizilerde bazen şöyle bir durumla karşılaşırız:
$black = 'Siyah';
$red = 'Kırmızı';
$blue = 'Mavi';
$data = [
'black' => $black,
'red' => $red,
'blue' => $blue,
];
Gördüğünüz gibi $data dizisinin anahtar/eleman isimleri ile aldığı değişken değerler aynı isme sahip. Böyle durumda bu şekilde de yazılabilir:
$black = 'Siyah';
$red = 'Kırmızı';
$blue = 'Mavi';
$data = compact('black', 'red', 'blue');
compact() bize burada değişken isimlerinden ve değerlerinden bir associative array oluşturur. İkisinde de aynı $data dizisini elde edersiniz;
{
"black": "Siyah",
"red": "Kırmızı",
"blue": "Mavi"
}
compact bu işe yarar. with() ise (View::with()) şablona veri göndermek için kullanılan bir Laravel yöntemi. Kullanım şekli ise:
return view('users.index')->with('users', $users);
// ya da
return view('users.index')->with([
'users' => $users,
'title' => 'Users',
]);
Bunun dışında şablona veri göndermenin bir yolu daha var o da view() yönteminin ikinci parametresi olarak veriyi dizi olarak vermek, ki bu en çok tercih ettiğimiz yoldur:
return view('users.index', [
'users' => $users,
]);
Şimdi üstte compact kısmında anlattığımdan yola çıkarak şöyle yaptığınızı düşünürseniz
return view('colors.index', [
'black' => $black,
'red' => $red,
'blue' => $blue,
]);
aslında şöyle de yapabilirsiniz demektir:
return view('colors.index', compact('black', 'red', 'blue'));
// ya da
return view('colors.index')->with(compact('black', 'red', 'blue'));
Aslında olay bu.