Nastavení výchozí routy pro homepage:default

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

Mám problém s nastavení výchozí routy – tedy co se stane, když nezadám do url žádné parametry. Aplikaci jsem začal tvořit na sandboxu, který je součástí aktuální verze Nette (Nette-2.4–20160731). Trochu jsem přeuspořádal adresářovou strukturu a smazal téměř celou ukázkovou aplikaci, jen jsem si tam nechal HomepagePresenter s jeho šablonami a chtěl bych aby při zadání url https://www.novy.eu/tz/ se zobrazil tento výchozí presenter. V config.neon jsem také vše smazal. V tomto okamžiku, když zadám tuto url, tak dostanu chybovou hlášku : No route for HTTP request
Takže jsem zkusil podle návodu na https://doc.nette.org/…tion/routing vytvořit simplerouter zadáním :

services:
application.router: Nette\Application\Routers\SimpleRouter(‚Homepage:default‘)

do config.neon. Po této úpravě dostanu chybovou hlášku: Service ‚application.application‘: Multiple services of type Nette\Application\IRouter found: routing.router, application.router

Takže prosím o radu, co dělám špatně a jak tuto úvodní stránku zprovoznit.

CZechBoY
Člen | 3608
+
0
-

Správně má být:

services:
	router: Nette\Application\Routers\SimpleRouter('Homepage:default')
Mirek
Člen | 86
+
0
-

Díky moc,
to pomohlo od chyby routeru a teď mám další problém – objevila se chyba Cannot load presenter ‚Homepage‘, class ‚HomepagePresenter‘ was not found – což je nejspíš způsobeno tím, že jsem si předělal adresářovou strukturu a nějak mi nefunguje autoload.
Zde je obrázek mé adresářové struktury a pohled na bootstrap.php, kde jsem opravoval některé cesty http://nette.svrcek.cz/strom1.gif
A v \tz\app\presenters\HomepagePresenter.php je definovaná třída HomepagePresenter – je to nezměněný soubor tak jak je v distribučním balíku

CZechBoY
Člen | 3608
+
0
-

Jak máš nastavený mapping presenterů?
V sandboxu je to defaultně

	mapping:
		*: App\*Module\Presenters\*Presenter
Mirek
Člen | 86
+
0
-

mapping jsem zaremoval, takže ho nijak nastavený nemám

CZechBoY
Člen | 3608
+
0
-

Tak tam hoď tohle mapování ze sandboxu nebo přesuň všechny třídy o namespace výš (odebrat App na začátku).

Mirek
Člen | 86
+
0
-

Díky, tak když jsem mapping odremoval, tak už to funguje, jen se mi o tom mappingu nedaří nic najít v dokumentaci, takže je to pro mě velká neznámá co že to vlastně dělá

janpecha
Backer | 75
+
0
-

@Mirek mapping definuje převod názvu presenteru na název PHP třídy, viz dokumentace https://doc.nette.org/…n/presenters#… :)

Editoval janpecha (15. 9. 2016 19:31)

Mirek
Člen | 86
+
0
-

Díky za odkaz, tak jsem postoupil o kousek dál
Udělal jsem si další stránku – tedy vytvořil jsem si ZnamkaPresenter, udělal pro něj šablonu a když si zadám url novy-web.cz/tz/?presenter=Znamka&action=default&id=123 tak se mi správně zobrazí (dokonce automaticky zkrátí url o action=default) a tak jsem chtěl přejít na „hezké“ url a nepoužít tedy SimpleRouter.
Tak jsem v config.neon použil to co je v sandboxu:
services:
router: App\RouterFactory::createRouter

a pak jsem také použil router ze sandboxu, který routou
$router[] = new Route(‚<presenter>/<action>[/<id>]‘, ‚Homepage:default‘);
by mi měl vyhovovat.
No a mám problém, když si zadám url novy-web.cz/tz/?presenter=Znamka&action=default&id=123 tak se dostanu na výchozí presenter Homepage, nikoliv na ten druhý Znamka. A když zkusím zadat url novy-web.cz/tz/Znamka/default/123 tak dostanu hlášku, stránka nenalezena. Takže opět netuším, kde je chyba.

Editoval Mirek (16. 9. 2016 17:47)

CZechBoY
Člen | 3608
+
0
-

Máš správně nastavený web server? Ukaž konfigurace virtual hosta.

Mirek
Člen | 86
+
0
-
vhost.conf
<VirtualHost 127.0.0.1:80>
    ServerAdmin admin@test.cz
    DocumentRoot D:/WWW/novy-web.cz
    ServerName www.novy-web.cz
    ServerAlias www.novy-web.cz
    ErrorLog d:/www/_Apache_log/2.4_x64/novy-web.cz/error.log
    CustomLog d:/www/_Apache_log/2.4_x64/novy-web.cz/access.log common
</VirtualHost>
ssl.conf
<VirtualHost _default_:443>
  DocumentRoot "D:/WWW/novy-web.cz"
  ServerName www.novy-web.cz
  ServerAdmin admin@test.cz
  ErrorLog "d:/www/_Apache_log/2.4_x64/novy-web.cz/error_ssl.log"
  TransferLog "d:/www/_Apache_log/2.4_x64/novy-web.cz/access_ssl.log"
  SSLEngine on
  SSLCertificateFile "C:/web/Apache2.4.12_x64/conf/server.crt"
  SSLCertificateKeyFile "C:/web/Apache2.4.12_x64/conf/server.key"
  <FilesMatch "\.(cgi|shtml|phtml|php)$">
      SSLOptions +StdEnvVars
  </FilesMatch>
  <Directory "C:/web/Apache2.4.12_x64/cgi-bin">
      SSLOptions +StdEnvVars
  </Directory>
  BrowserMatch "MSIE [2-5]" \
           nokeepalive ssl-unclean-shutdown \
           downgrade-1.0 force-response-1.0
  CustomLog "d:/www/_Apache_log/2.4_x64/novy-web.cz/ssl_request.log" \
            "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

jinak checker je na 100% spokojený s konfigurací serveru
a v tom minulým postu jsem u těch url adres musel vynechat počáteční www neboť fórum mi to převádělo na url, které byly zkracovány a to podstatné z nich nebylo vidět

CZechBoY
Člen | 3608
+
0
-

A teda máš teda v tom adresáři povolený přepisování?

<Dictionary "/cesta/k/projektu/ nebo jen / ">
AllowOverride All
</Dictionary>
Mirek
Člen | 86
+
0
-

V httpd.conf mám

<Directory "D:/www">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
CZechBoY
Člen | 3608
+
0
-

Jaká je ta hláška nenalezena? Je to hláška od web serveru nebo nette?

Mirek
Člen | 86
+
0
-

je to hláška webserveru

galab
Backer | 74
+
0
-

Mirek napsal(a):

je to hláška webserveru

Jak vypadá .htaccess v tom adresáři?

Mirek
Člen | 86
+
0
-

Tak tady byl problém – jak jsem si předělal adresářovou strukturu, tak mi .htaccess chyběl a žil jsem v domění, že podle rout si ho nette samo vyrobí. A ono zřejmě ne, takže když jsem překopíroval .htaccess do adresáře k index.php, tak to začalo chodit.
Mockrát děkuji za pomoc.