Merhaba arkadaşlar, Laravel 10 ile mevcut projemi sıfırdan yazarak hem kendimi geliştirmeye çalışıyorum hem de yeni gelen özellikleri kullanmaya çalışıyorum. Blog için hem aramaya göre hem de kategoriye göre filtreleme sistemi yaptım. Şu an düzgün çalışıyor ancak bunu yapmanın daha pratik bir yolu var mı yoksa ilerlediğim yol doğrumu onu sormak istedim sizlere. Fikirlerinize açığım.
class Blogs extends Component
{
use WithPagination;
public $category_id, $search;
public function createBlog()
{
$searchKey = Secure::clean($this->search);
if($this->category_id == null)
{
return Blog::search($searchKey)->where(['type' => 'normal', 'status' => 1])->orderBy('created_at', 'desc')->paginate(4);
}else{
return Blog::search($searchKey)->where(['category_id' => $this->category_id])->where(['type' => 'normal', 'status' => 1])->orderBy('created_at', 'desc')->paginate(4);
}
}
public function withCategories($category = null)
{
$this->category_id = Secure::clean($category);
}
public function render($blogs = null)
{
$randoms = Blog::where(['type' => 'normal', 'status' => 1])->orderBy('view_count', 'desc')->paginate(5);
$blogCategories = Category::orderBy('category_name', 'asc')->get();
return view('livewire.blogs', [
'blogs' => $this->createBlog(),
'randoms' => $randoms,
'blogCategories' => $blogCategories,
]);
}
}
Burada ki mantık, sayfada kategori ismine tıklandığı zaman withCategories methodu tetikleniyor ve category_id güncelleniyor ardından createBlog fonksiyonu yeniden çalıştırılıp mevcut sorgu güncellenerek kullanıcının ekranına düşüyor. Arama kısmı zaten wire:model ile sürekli olarak güncelleniyor kullanıcı tarafından ne girilirse.
Sormak istediğim iki şey var, birincisi bu izlediğim yol doğru mu yoksa daha pratik veya profesyonel bir yolu var mı?
İkincisi de, kullanıcı arama kutusuna girdiği anda bu sayfaya geliyor normalde csrf_token kullanıyorduk post ederken ancak şu anda csrf kullanılmıyor sanırım güvenlik açığı yaratır mı?