Pro více url jeden presenter

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
h4kuna
Backer | 740
+
0
-

Zdravím hraju si s routama a potřeboval jsem udělat jednoduché odchytavani nekolika url a predavat je jednomu presenteru.

  • example.com/o-firme
  • example.com/reference

krásně pro to funguje

<?php
//takto jednoduchý zápis se mi opravdu líbi
$static ="<o-firme><reference>";
    $router[] = new Route($static, array(
        Route::PRESENTER_KEY => 'Front:Static',
        'action' => 'default',
        'id' => NULL,
    ));
?>

nejsem si jist zda tento zapis je pro to určen a když do url zadám example.com/p-reference tak mi to routa taky zachytí, což nechci, když už tak ONE_WAY, ale to nemaka, respektive to vygeneruje nejakou hruzu /front.static/?o-firme=front.stati&reference=c. Tak jsem zkusil tomu dat <o-firme><?reference> a to se zasmyčkuje při přesměrování (toto jsem chtěl uvést jako bug).

Otázka zní jak to lépe udělat?

EDIT:

Teď jsem zjistil že to špatně generuje odkazy, což se dalo předpokladat, není to pro toto určené :)

Editoval matata (31. 5. 2010 22:57)

Ondřej Mirtes
Člen | 1536
+
0
-
$router[] = new Route('<id o-firme|reference>', array(
	'presenter' => 'Front:Static',
	'action' => 'default',
));
h4kuna
Backer | 740
+
0
-

Ahoj diky to je ono avsak muzes mi jeste napsat jak vygeneruju spravny odkaz v sablone?

pac tady davam to o-firme jako presenter ze?

<?php
<a href="{link o-firme}">o-firme</a>
?>

a ja to potrebuju dat jako id

EDIT:

tak jsem nasel toto pro zapis v prirezene sablone

<?php
<a href="{link default, 'id' => 'o-firme'}">o-firme</a>
?>

ale kdyz to dam nekam jinam tak to nejde to bude asi tim default

Editoval matata (1. 6. 2010 11:09)

mkoubik
Člen | 728
+
0
-

Nemělo by to být

$router[] = new Route('o-firme', array(
	'presenter' => 'Front:Static',
	'action' => 'default',
));

$router[] = new Route('reference', array(
	'presenter' => 'Front:Static',
	'action' => 'default',
), Route::ONE_WAY);

aby nette vědělo, které url je kanonické?

Jan Tvrdík
Nette guru | 2595
+
0
-

Ne.

Honza Kuchař
Člen | 1662
+
0
-

Jak to, že ne? Já myslel, že to tak je? Zapsal bych ty routy obráceně (v opačném pořadí), ale to by v tomto případě snad nemělo mít vliv.

Ale při generování odkzu odkazuješ na prenter nikoli na nějaký text v routě. Generování odkazu je v tomto odhledu neávislé na routách. Ty při generování odkazu vlastně určuješ, kam chceš aby uživatel po kliknutí doputoval.

radecek
Člen | 23
+
0
-

Zkousel jsem udelat to same.. Nastavil jsem routy.. nevim proc ale <onas|aktivity> nechtelo fungovat, protoze retezec neni alfanumericky..

$router[] = new Route('onas', array(
  'presenter' => 'Text',
  'action' => 'default',
));

$router[] = new Route('aktivity', array(
  'presenter' => 'Text',
  'action' => 'default',
));

Pokud napisu adresu do prohlizece example.cz/onas, nebo example.cz/aktivity zobrazi se prezentr text. Ale nedari se mi vytvorit na nej odkaz, protoze mi {link} hlasi chybu, ze prezentry neexistuji.

Nemel by si z routy vytahnout jejich alternativny prezentery?

Editoval radecek (4. 3. 2011 15:09)

bojovyletoun
Člen | 667
+
0
-
$router[] = new Route('<node>', array(
        'presenter' => 'Front:Static',
        'action' => 'default',
));

class StaticPresenter{
function actionDefault($node){}};

Akorát to neřeší, když zadám neexistující node ( ->Vyhodit třeba BadRequestException). Když jde o statické stránky mužeš pak volat třeba $this->setView($node) ( → automaticky pošle šablonu s názvem $node).

PS: z tohoto dotazu mám pocit, že nejde o 100% čisté řešení, ale asi to nevadí.

radecek
Člen | 23
+
0
-

Nejde mi o staticky web, ale spise o to abych si mohl v administraci vytvorit stranky typu – text, clanky, galerie, soubory, a pak by se volali jednotlive prezentery, ktere by nebyli zavisle na url..

Dulezite je to aby stranka mela pak jednotnou administraci pro vsechny typy prezenteru..

Editoval radecek (4. 3. 2011 15:47)