Změna DEFAULT_ACTION (default → index)

Aeanne
Člen | 4
+
0
-

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_ACTIONPresenter.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 | 1176
+
0
-

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
+
0
-

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 | 1176
+
+2
-

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

Šaman
Člen | 2635
+
+1
-

default bylo defaultní co pamatuju, určitě od první stabilní vydané verze (a ještě před tím).
Imho hledej v té aplikaci nějakou část, která toto nastavení mění (a ta mohla přestat fungovat v nové verzi).

Aeanne
Člen | 4
+
0
-

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 | 1176
+
+2
-

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

Aeanne
Člen | 4
+
0
-

To je perfektní řešení, děkuji!

mskocik
Člen | 53
+
0
-

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: 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.

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.