Nastavení výchozí routy pro homepage:default
- Mirek
- Člen | 86
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.
- Mirek
- Člen | 86
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
- janpecha
- Backer | 75
@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
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)
- Mirek
- Člen | 86
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
- Mirek
- Člen | 86
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.