muharremozdemir Bununla ilgili oturup çok güzel bir açıklama yazmıştım ama cevapladığım şahıs tüm mesajlarını silip kendi hesabını da silerek forumdan ayrıldığı için konuyu kaybettik. Bunun gibi birkaç olayı LinkedIn'de sitemli bir şekilde paylaştım ama daha çok tepki aldım, ben de açıkçası bu tür şeyleri ciddiye aldığım için kendimi suçlayıp LinkedIn postunu sildim. Neyse, yapılacak bir şey yok...
tl;dr
Daima $request->input()
kullanın.
$request->input()
- $request->name şeklindeki kullanımı kesinlikle kullanmayın. En basitinden $request->headers şeklinde bir özellik var. Siz de dışarıdan headers isimli bir şey gönderirseniz $request->headers yazdığınızda sizin değer mi gelir yoksa http headers mı? O yüzden bu tür karışlıklıkları engellemek için daima $request->input() kullanın.
$request->input('filters.name')
şeklinde dizi şeklinde gelen içeriğe ulaşabilirsiniz.
$request->input('filters.*')
ya da $request->input('filters.0.id')
gibi dizi gelen parametrelerde kolay işlem yapabilirsiniz. data_get() ile kullanımın hepsi geçerlidir.
$request->input('quantity', 1)
şeklinde gelen parametre boş ise varsayılan değer belirleyebilirsiniz.
$request->input('quantity', 1)
bana göre daha okunaklı. Kullanıcı tarafından gelen bir parametre olduğunu bakarken anlayabiliyorum.
$request->input(), Request::input(), request()->input()... hangisi kullanılmalı?
Request::input() ile request()->input() aynı şey; $request->input() ise genellikle Request sınıfı yönteme enjekte edildiğinde kullanırsınız. Burada önemli olan, Request sınıfı $request değişkeni ile enjekte edilmiş ise daima o değişkeni kullanmalısınız. Özellikle form request enjekte ettiğinizde Request::input() ya da request()->input() size form request objesini değil, yeni oluşturulmuş Request objesini verir ki onun içinde mesela validated() olmayacaktır. Yanlış Request'i almış olursunuz.
$request->get(), $request->post() gibi yöntemler var, bunlar nedir? Kullanılabilir mi?
Bunlar Request sınıfının üstüne inşa edildiği Symfony bileşeninden gelmekte olup hiçbir şekilde kullanmamanız gerekiyor. Her şeyin çözümü $request->input().