ugrás a tartalomhoz

ugyanolyan típusú url

kemmma · 2013. Jan. 11. (P), 15.24
Sziasztok, az lenne a kérdésem, hogy a Routing-nál, hogy oldhatom azt meg, hogy két ugyanolyan típusú url-t használjak?
(konkrétan Silex-ben kellene, de ha megadjátok, hogy más rendszereknél mi a megfelelő utasítás, akkor már el tudok indulni)
Jelenleg mappákat használok, de ezt el kellene hagyni. Egy egyszerű példa, amit át kellene alakítani:

$app = new Silex\Application();
$app->get('/cikk/{id}', function ($id) use ($app) {
	$contents = array('kapcsolat', 'linkek');
	if (in_array($id, $contents)) {
		return 'En vagyok a cikkoldal: ' . $id;
	}
	$app->abort(404, 'A keresett cikk nem talalhato');
});
$app->get('/termek/{id}', function ($id) use ($app) {
	$contents = array('alma', 'korte');
	if (in_array($id, $contents)) {
		return 'Ez itt a termekbemutato: ' . $id;
	}
	$app->abort(404, 'A keresett termek nem talalhato');
});
$app->error(function (\Exception $e) use ($app) {
	return 'Ajjajj...' . $e->getMessage();
});
$app->run();
Tehát itt a /cikk/kapcsolat, /cikk/linkek, /termek/alma, /termek/korte oldalakra kapunk tartalmat, máskülönben hibaoldal. Az a feladat, hogy le kellene vágni a mappákat, azaz ezután a következő url-eket szeretnem /kapcsolat, /linkek, /alma, /korte Sajnos nem jövök rá, hogy miként tudnék a cikkek részből úgy kiugrani, hogy a termékek részhez jussak.
Persze egy új osztállyal ezt könnyen megoldhatnám, de az nagyon nem tetszik.
 
1

explode?

Poetro · 2013. Jan. 11. (P), 17.03
2

explode??

kemmma · 2013. Jan. 11. (P), 17.24
Szia! Igazság szerint valami silex/symfony utasításra gondoltam, konkrétan a 7. sorban lévő abort helyére.
(a konkrét példát nézve egy goto 10 utasítást szeretnék:)

Pontosan mire is gondolsz? (lehet, hogy túldimenzionálom a problémát, de az explode-t nem tudom elhelyezni most ebbe az egészbe)
Köszi!
5

Az a feladat, hogy le kellene

Poetro · 2013. Jan. 11. (P), 22.31
Az a feladat, hogy le kellene vágni a mappákat, azaz ezután a következő url-eket szeretnem /kapcsolat, /linkek, /alma, /korte

Erre válaszoltam: list(, , $mappa) = explode('/', $url);
6

nem string kezelési

kemmma · 2013. Jan. 11. (P), 23.13
Nem, nem string kezelési problémával jöttem. :) Pedig hosszan fogalmaztam a kérdést, nem gondoltam volna, hogy string kezelési problémának nézi valaki, helyesebben: le kellene vágni => el kellene hagyni.

Másként fogalmazva:

$app = new Silex\Application();
$app->get('/{id}', function ($id) use ($app) {
	if ($id === 'kapcsolat') {
		return $id;
	}
	// ...
});
$app->get('/{id}', function ($id) use ($app) {
	if ($id === 'alma') {
		return $id;
	}
});
$app->run();
A kérdés az, hogy megoldható-e egyáltalán az, hogy a fenti kód az /alma url-re kiírja a 10. sor alapján, hogy alma? Valahogy kilépni az adott ágból, és a következő illeszkedő ágban újrakezdeni a futást?
3

Átirányítás?

MadBence · 2013. Jan. 11. (P), 19.20
redirect (vagy csinálsz egy sub-requestet, ha a böngészőt ki akarod hagyni a mókából)
4

Pontosítás!

kemmma · 2013. Jan. 11. (P), 20.02
Pontosítok, a témanyitóban vázolt verzió jelképezi az aktuális verziót, amit több helyen is módosítani kellene. Az új verzióban mind a 2., mind a 9. sor eleje így nézne ki: $app->get('/{id}', ...

Így fog illeszkedni a /kapcsolat, illetve az /alma url. (ez alatt értem azt, hogy "ugyanolyan típusú url", de utólag érzem, hogy elég bénácska címet sikerült adni a témának:)

Ám ekkor hiába a redirect, illetve az új Request, minden lekérés az első ágba fut be. Ezért gondoltam én, hogy talán megoldható lenne az, hogy miután az első ágba belement, majd nem talált tartalmat, valahogy tovább kellene küldeni.