Bugün, Laravel Nova 4/5 için geliştirdiğim yeni bir özel bileşeni paylaşmak istiyorum.
Bu paketin arkasındaki fikir oldukça basit: kademeli bağımlı filtreler. Eğer Nova filtrelerinizin birbirleriyle etkileşim içinde olmasına ihtiyaç duyduysanız — bir filtrede bir değeri seçtiğinizde, otomatik olarak bir sonraki filtredeki seçeneklerin daralmasını istiyorsanız — bu çözüm tam size göre.
Örneğin, Müşteriler, Projeler ve Kullanıcılar olduğunuzu hayal edin. Bir müşteri seçtiğinizde, Proje filtresi o müşteriyle ilgili projeleri göstermelidir. Ardından, bir proje seçtiğinizde, Kullanıcı filtresi yalnızca o projeye atanmış kullanıcıları daraltmalıdır.
Nova, bunu varsayılan olarak desteklemiyor ve bunu her seferinde sıfırdan oluşturmak oldukça zahmetli. Bu yüzden bunu temiz, yeniden kullanılabilir bir çözüme dönüştürdüm:
use DevJM\DependentFilter\Nova\Filters\DependentFilter;
$client = DependentFilter::make('Client', Client::class, 'client_id');
$project = DependentFilter::make('Project', Project::class, 'project_id')
->dependsOn($client, foreignKey: 'client_id');
$user = DependentFilter::make('User', User::class, 'user_id')
->dependsOn($project, relationship: 'projects');
return [$client, $project, $user];
Üç satır. Üç kademeli filtre. Gereksiz kod yok.
Kaynak: Orijinal Makale


