Pole v predávanom parametri routy
- mayo
- Člen | 2
Ahojte,
mám problém s jednou routou. Chcem aby link /byty.html smeroval na presenter
AdvertListing a predával parameter $categoryId ako pole.
Mám to nastavené takto:
$router[] = new Route('byty[-<listing-paginator-page [0-9]+>].html', [
'presenter' => 'AdvertListing',
'action' => 'default',
'categoryId' => [100]
]);
Presenter vyzerá takto:
public function actionDefault(array $categoryId = [], array $actionId = []);
Routou sa pekne dostanem do prezentera ale $categoryId je prázdne pole. Ak zadefinujem $categoryId ako skalár, tak to funguje. Ale pole sa tam proste nepredá.
Kde by mohol byť problém?
- ZahorskyJan
- Člen | 59
@mayo router si s polem neporadí. Musíš mu dát skalár. Klidně to může být string ve kterém budeš mít ID oddělená čárkou. V action metodě ale pak musíš udělat explode, aby ses k tomu dostal:
public function actionDefault(string $categoryId)
{
$categoryId = explode(',', $categoryId);
}
- mayo
- Člen | 2
ZahorskyJan napsal(a):
@mayo router si s polem neporadí. Musíš mu dát skalár. Klidně to může být string ve kterém budeš mít ID oddělená čárkou. V action metodě ale pak musíš udělat explode, aby ses k tomu dostal:
public function actionDefault(string $categoryId) { $categoryId = explode(',', $categoryId); }
Toto mi bohužiaľ nepomôže. Presenter dostáva dáta hlavne z formulára na vyhľadávanie, kde môže byť zvolených viac položiek v multiselecte (to mi príde ako pole). Spravím na to teda vlastný router.
- ZahorskyJan
- Člen | 59
mayo napsal(a):
ZahorskyJan napsal(a):
@mayo router si s polem neporadí. Musíš mu dát skalár. Klidně to může být string ve kterém budeš mít ID oddělená čárkou. V action metodě ale pak musíš udělat explode, aby ses k tomu dostal:
public function actionDefault(string $categoryId) { $categoryId = explode(',', $categoryId); }
Toto mi bohužiaľ nepomôže. Presenter dostáva dáta hlavne z formulára na vyhľadávanie, kde môže byť zvolených viac položiek v multiselecte (to mi príde ako pole). Spravím na to teda vlastný router.
Nevím jak ti to tam kam jde, ale tak v tom presenteru udělej něco jako
$ids = implode(',', $form['search'])
a nemusíš psát vlastní router.