Chciałbym uzyskać taki efekt możliwie najprostszym sposobem:
../category/subcategory/id ze wszystkimi możliwymi kombinacjami np: .../id, ../subcategory, ../subcategory/id
Otóż w zasadzie napisałem kod, który działa. Trzy niewiadome były jeszcze znośne, ale potrzebuje jeszcze utworzyć podobny na ok. 5 niewiadomych (już sama myśl mnie przeraża), dlatego chciałem się spytać czy nie ma czasem jakiegoś prostszego sposobu? Mam przeczucie, że jednak nie do końca wykorzystuje możliwości frameworka (mój pierwszy projekt).
A jeśli chodzi o wady poniższego kodu to:
-każdorazowo muszę sprawdzać 'category_name', czyli po prostu warianty kategorii. Jest ich ok.7, więc jest jeszcze ok.
-sam kod to potworek (wkleiłem tylko pierwszy szkielet). W rzeczywistości w każdym if-ie rozważanych jest jeszcze kilka możliwości z każdorazowym połączeniem z bazą danych.
routes.php
HomeController
public function test($category= null, $subcategory = null, $id = null ) { if ($category && $subcategory && $id) { return 'Kategoria: '.$category.'</br>'.'Subcategory: '.$subcategory.'</br>'.'Id: '.$id.'</br>'; } elseif ($category && $subcategory) { if( $subcategory > 0 ) {$id = $subcategory; $subcategory= null;} if( $category != 'category_name') {$subcategory = $category; $category= null;} if( $category != 'category_name' && $id == null) {return Redirect::to('home');} return '2 opcja:<br>Kategoria: '.$category.'</br>'.'Subcategory: '.$subcategory.'</br>'.'Id: '.$id.'</br>'; } elseif ($category) { if( $category > 0) {$id = $category; $category= null;} elseif( $category != 'category_name') {$subcategory = $category; $category= null;} return '3 opcja:<br>Kategoria: '.$category.'</br>'.'Subcategory: '.$subcategory.'</br>'.'Id: '.$id.'</br>'; } else { return "4 opcja"; } }
Do tego wszystkiego dochodzi parę drobnych filtracji przesyłanych za pomocą sesji, w zależności od tego co wybierze użytkownik w checkbox-ie.