nefunguje mi změna adresářové struktury, přitom základní skeleton aplikace funguje

Thommie
Člen | 32
+
0
-

stáhl jsem si skeleton nette aplikace a ta mi funguje dobře, problém je, že na hostingu potřebuji strukturu:

  • www/ (veřejný adresář)
  • app/ (zde jsou všechny ostatní složky)

Když přesunu složky do app/ a upravím cesty v index.php a v bootstrap.php a upravím i composer.json:

"autoload": {
		"psr-4": {
			"App\\": "../app"
		}
	},
  • přegeneruji autoloading (composer install), tak mi to přesto vyhazuje chybu:
Interface "Latte\Runtime\ISnippetBridge" not found

a nedaří se mi aplikaci zprovoznit, přestože ve svém základním nastavení funguje dobře. Jakmile ale začnu měnit strukturu, tak se to rozhodí. Neví někdo, co dělám špatně?

Díky

jeremy
Člen | 50
+
0
-

Nejsem si jisty, ale myslim ze je taky za potrebi uprasnit cestu k vendor slozce:

"config": {
	...
	"vendor-dir": "path/to/vendor",
	...
},

Edit: mam to taky takhle rozdeleny, mam slozku public a src. composer.json a composer.lock mam mimo obe slozky.

- public
- - ...
- src
- - ...
- - vendor
- composer.json
- composer.lock

Editoval jeremy (28. 3. 16:20)

Thommie
Člen | 32
+
0
-

díky, ale to mi taky bohužel nefunguje

Editoval Thommie (28. 3. 21:14)

m.brecher
Generous Backer | 765
+
0
-

@Thommie

přegeneruji autoloading (composer install)

Já jsem také řešil problém, kdy composer neuměl načíst nějaké třídy, composer install nepomohl, použil jsem

> composer dump-autoload

Můžeš to vyzkoušet, třeba Ti to také pomůže.

Thommie
Člen | 32
+
0
-

m.brecher napsal(a):

@Thommie

přegeneruji autoloading (composer install)

Já jsem také řešil problém, kdy composer neuměl načíst nějaké třídy, composer install nepomohl, použil jsem

> composer dump-autoload

díky, to jsem zkoušel, bohužel pořád nic. Přijde mi to zvláštní, protože mám projekt, kde se mi to kdysi podařilo nastavit, ale tady to nejsem schopen rozchodit. Už jsem zkoušel snad všechno :)

Thommie
Člen | 32
+
0
-

našel jsem „ISnippetBridge“ ve fungující verzi (vendor/nette/application/src/Bridges/ApplicationLatte/SnippetBridge.php) a phpstorm mi říká, že takový interface neexistuje :) ale v tomto případě to nevadí z nějakého důvodu.

m.brecher
Generous Backer | 765
+
0
-

@Thommie

V třídě SnippetBridge je chyba, protože ten interface byl skutečně odstraněn, ale na githubu v poslední verzi už jsem třídu SnippetBridge vůbec nenašel:

https://github.com/…icationLatte

našel jsem i záznam, že soubor byl odstraněn.

Upgraduj nette na úplně poslední verzi a mělo by být po problému !!

m.brecher
Generous Backer | 765
+
0
-

@Thommie

Nejsem si jistý, zda odstranění chyby je v poslední vydané verzi nette/application. Kdyby upgrade nepomohl, tak můžeš vyzkoušet v třídě Nette\Bridges\ApplicationLatte\SnippetBridge zakomentovat problémový interface:

// use Latte\Runtime\ISnippetBridge

class SnippetBridge /* implements ISnippetBridge */

do doby než se vydá další verze nette/application, ve které už třída SnippetBridge nebude.

Thommie
Člen | 32
+
0
-

@m.brecher

zkusil jsem, ale pak se objeví další chybějící třídy, takže problém bude asi ve jmenných prostorech nebo se někde neaktualizovaly cesty. Nevím do detailů, jak funguje composer, ale přijde mi divný, že nefunguje ani kompletní reinstalace balíčků včetně smazání composer cache.

Thommie
Člen | 32
+
0
-

No tak nakonec jsem to vyřešil tak, že místo abych přesouval vendor a app o úroveň níž, tak jsem www přesunul o úroveň výš a to funguje :D. Dokud se nepohne s vendorem, tak je vše ok :). Nechápu, ale už nemám bohužel čas to řešit víc, funguje to a jdu od toho :)

Díky za pomoc