Změna DEFAULT_ACTION (default → index)
- Aeanne
- Člen | 4
Zdravím!
Mám na starosti upgradování staré aplikace, která běží na Nette
2.3.
Používám pro to tento článek – https://doc.nette.org/…tions/to-2-4 –
nicméně mě zmátlo, že v něm není zmínka o tom, že se v této verzi
konstanta DEFAULT_ACTION
v Presenter.php změnila
z index na default. Předpokládám, že by
to tam mělo být?
Každopádně je to velmi nepříjemná změna, jelikož aplikace, kterou
spravuji, již s indexem jakožto default pracuje, a využívá tedy
linky jako Home:
, což teď odkazuje na
„default.latte“.
Vzhledem k tomu, že se jedná o konstantu, předpokládám, že ji v kódu
jen tak nezměním, a zasahovat do vendoru zní jako špatný nápad.
Přepisovat všechny instance indexu na default jak v kódu,
tak názvech souborů, mi přijde také hloupé. Mám nějakou jinou
možnost?
Předem děkuji za odpověď.
- Marek Bartoš
- Nette Blogger | 1275
Můžeš si v routách do pole v druhém parametru doplnit
['action' => 'index']
, tím výchozí hodnotu přetížíš a
nikde jinde to nebudeš muset měnit.
Alternativa je přejmenovat všechny actionIndex a renderIndex metody a index.latte šablony
Editoval Marek Bartoš (6. 2. 10:18)
- Aeanne
- Člen | 4
Mé RouteListy v RouterFactory.php
vypadají následovně:
$admin = new RouteList('Admin');
$admin[] = new Route('admin/<presenter>/<action>/<id>', array(
'presenter' => 'Home',
'action' => 'index',
'id' => NULL,
));
$router[] = $admin;
Bohužel si to stále myslí, že při vytvoření odkazu Home:
chci default.latte
.
Možná je zároveň dobré zmínit, že jsem momentálně na verzi Nette 2.4. Pokud toto funguje na novějších verzích, mohu se k tomu asi postupně dostat.
Editoval Aeanne (6. 2. 10:32)
- Marek Bartoš
- Nette Blogger | 1275
Koukám se, jak to bylo historicky a i ve 2.3 byla akce default.
Nejspíš jsi to měl nějak přetížené a s aktualizací ti to přestalo
fungovat
https://github.com/…resenter.php#L40
- Aeanne
- Člen | 4
Aha, to je fascinující. default
tam vskutku bylo už úplně
od začátku. Tak to někdo chytře přede mnou v tom vendoru vážně
přepsal, protože tam DEFAULT_ACTION = 'index';
bylo. Děkuji moc
za odpověď! (pro kontext, při přebírání tohoto projektu jsem prostě
dostala dump všech složek v tomto stavu, neinstalovala jsem nic přes
composer)
Teď budu muset řešit co s tím… celkem bych však ocenila, kdyby to přepsat nějak normálně šlo.
Editoval Aeanne (6. 2. 11:20)
- Marek Bartoš
- Nette Blogger | 1275
Pokud to zrovna nechceš všude přepisovat, tak si můžeš vyrobit patch
file a změnit to ve vendoru, bez ztráty aktualizací
https://github.com/…hes/tree/1.x
- mskocik
- Člen | 62
Aeanne napsal(a):
Mé RouteListy v
RouterFactory.php
vypadají následovně:$admin = new RouteList('Admin'); $admin[] = new Route('admin/<presenter>/<action>/<id>', array( 'presenter' => 'Home', 'action' => 'index', 'id' => NULL, )); $router[] = $admin;
Bohužel si to stále myslí, že při vytvoření odkazu
Home:
chcidefault.latte
.Možná je zároveň dobré zmínit, že jsem momentálně na verzi Nette 2.4. Pokud toto funguje na novějších verzích, mohu se k tomu asi postupně dostat.
Problém bude asi ešte niekde inde. Pretože ja to mám v jednom projekte
nastavené rovnako ako ty (index
namiesto default
) a
funguje to bez problémov.