n:href, href pravdepodobne chyba v .htaccess
- iNviNho
- Člen | 352
Mám stránku www.imcopower.sk
Po kliknutí na Power supply sa mi vygeneruje link http://www.imcopower.sk/…wer-supply-1, presnejšie /…wer-supply-1, pri ostatných kategoriach to nerobí … Nerozumiem tomu,pretože predm pár dňami mi to robilo pri inej kategorií.
Linky som vytváral cez n:href a ked som to zmenil na href tak to fungovalo a za 2 dni prestalo, tak tomu naozaj nerozumiem .
<?php
<ul>
<li><a n:href="Domov:">Home</a></li>
{foreach $menu as $m}
<li><a n:href="Produkty:kategoria $m->id_kat">{$m->nazov}</a></li>
{/foreach}
<li><a n:href="Sluzby:">Services</a></li>
<li><a n:href="ONas:">About us</a></li>
<li><a n:href="Kontakt:">Contact</a></li>
</ul>
?>
.htacces
<?php
# disable directory listing
<IfModule mod_autoindex.c>
# Options -Indexes
</IfModule>
# enable cool URL
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /www
# prevents files starting with dot to be viewed by browser
RewriteRule /\.|^\. - [F]
# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>
# enable gzip compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript application/json
</IfModule>
?>
- iNviNho
- Člen | 352
Zakomentoval som router
<?php
$kat = dibi::query("SELECT id_kat, url FROM kategorie")->fetchPairs("id_kat","url");
$router = new RouteList();
/*
$router[] = new Route('[<lang [a-z]{2}(?<!sk)>/]produkty/kategoria[/<id>]', array(
'lang' => 'sk',
'presenter' => 'produkty',
'action' => 'kategoria',
'id' => array(
Route::FILTER_IN => function ($id) {
if (is_numeric($id)) {
return $id;
} else {
$vysledok = dibi::query("SELECT id_kat FROM kategorie where url=%s",$id)->fetchSingle();
return $vysledok;
}
},
Route::FILTER_OUT => function ($id) use ($kat) {
if (!is_numeric($id)) {
return $id;
} else {
$vysledok = $kat[$id];
return $vysledok;
}
})));
*/
?>
už to nechádže tu chybu …
- romiix.org
- Člen | 343
Teraz som si všimol, že si sem dal odkaz:
http://www.imcopower.sk/%EF%BB%BF/produkty/kategoria/power-supply-1
EF-BB-BF je BOM znak v UTF-8.
Skús prekontrolovať súbory napr. Code Checkerom.
Čo presne očakávaš od Routra nastavením
[<lang [a-z]{2}(?<!sk)>/]
? Je to nejaké
divoké, nie?
- iNviNho
- Člen | 352
To mám nastavené kvoli jazykom, popravde som to iba okopíroval a moc tomu nerozumiem ..
Aj po zakomentovaní routra mi vyhadzuje tu chybu pri Kliknutí na power supply… avšak ked si rozkliknem battery napríklad a vlavo mám znova menu tak tamuž to ide …
Terjaší router
<?php
public function createRouter()
{
$kat = dibi::query("SELECT id_kat, url FROM kategorie")->fetchPairs("id_kat","url");
$router = new RouteList();
/*
$router[] = new Route('[<lang [a-z]{2}(?<!sk)>/]produkty/kategoria[/<id>]', array(
'lang' => 'sk',
'presenter' => 'produkty',
'action' => 'kategoria',
'id' => array(
Route::FILTER_IN => function ($id) {
if (is_numeric($id)) {
return $id;
} else {
$vysledok = dibi::query("SELECT id_kat FROM kategorie where url=%s",$id)->fetchSingle();
return $vysledok;
}
},
Route::FILTER_OUT => function ($id) use ($kat) {
if (!is_numeric($id)) {
return $id;
} else {
$vysledok = $kat[$id];
return $vysledok;
}
})));
*/
$router[] = new Route('[<lang [a-z]{2}(?<!sk)>/]<presenter>[/<action>][/<id>]', array(
'lang' => 'sk',
'presenter' => 'Domov',
'action' => 'default',
'id' => 0
));
$router[] = new Route('<presenter>/<action>/<id>', array(
'presenter' => 'Domov',
'action' => 'default',
'id' => 0
));
$router[] = new Route('<presenter>/<action>[/<id>]', 'Domov:default');
return $router;
}
}
?>
romiix.org napsal(a):
Teraz som si všimol, že si sem dal odkaz:
http://www.imcopower.sk/%EF%BB%BF/produkty/kategoria/power-supply-1
EF-BB-BF je BOM znak v UTF-8.
Skús prekontrolovať súbory napr. Code Checkerom.
Čo presne očakávaš od Routra nastavením
[<lang [a-z]{2}(?<!sk)>/]
? Je to nejaké divoké, nie?
Editoval iNviNho (11. 12. 2013 10:51)
- romiix.org
- Člen | 343
Namiesto:
$router[] = new Route('[<lang [a-z]{2}(?<!sk)>/]<presenter>[/<action>][/<id>]', array(
'lang' => 'sk',
'presenter' => 'Domov',
'action' => 'default',
'id' => 0
));
skús použiť:
$router[] = new Route('[<lang [a-z]{2}>/]<presenter>[/<action>][/<id>]', array(
'lang' => 'sk',
'presenter' => 'Domov',
'action' => 'default',
'id' => 0
));
BOM si prekontroloval?
- romiix.org
- Člen | 343
php.exe cesta_k_Nette_tools\Code-Checker\code-checker.php -d cesta\k\priecinku\s\aplikaciou
- iNviNho
- Člen | 352
Ďakujem,
Prebehol som to tym code-checkerom a teraz mi po kliknuti už nezobrazuje, že error 404 v aplikácií, ale tentokrát vybehne ladenka s textom: Nette\Application\BadRequestException #404
v code.bat som dal:
<code>
php.exe code-checker.php -d
</code>
code.bat a codechecker som umiestil do zložky, kde mám app, libs … vyskúšal som to spustiť aj v app ..
- romiix.org
- Člen | 343
Ten code-checker
niečo vypísal alebo aj spravil?
Predvolene iba vypisuje potenciálne problémy, až pridaním ďalšej voľby
sa dá prinútiť chyby opravovať. Ale to sa robí inak ako si nastavil v
code.bat
. Takže otázka je ako si to spúšťal – resp. aký
výstup si z toho získal a teda či následná 404 nie je výsledkom niečoho
úplne iného.
Ako máš teraz nastavený router na produkčnom serveri?
- iNviNho
- Člen | 352
Ja som to iba spustil enterom, prebliklo to a ihned sa to zatvorilo. Je správne, že som to dal do zložky imco (resp. sandbox)? Skúsil som to spustiť aj v zložke app … Ked prídem domov, skúsim sa pozrieť či som dodržal aj nejaké case sensitive a skúsim zmeniť tie parametre. Zákazník už začína byť nervozny, že mu to nefunguje … Skúšal som aj defaultne .htaccesy zo zložky Nette a tam asi problem nebude. Vyskúšal som zo zložky Nette aj defaultny router len si ho pozmeniť nech berie parameter id a stále ten problém.
Neviem či to nesúvisí len s layoutom, alebo s nejakou konkrétnou šablonou, pretože z tejto ktaegorie http://www.imcopower.sk/…ategoria/137 mi to sa dostať na power supply. Ak by si mi chcel moc pomôcť, možem ti kľudne hodiť prístup na ftp…
<?php
public function createRouter()
{
// $kat = dibi::query("SELECT id_kat, url FROM kategorie")->fetchPairs("id_kat","url");
$router = new RouteList();
$router[] = new Route('[<lang [a-z]{2}>/]<presenter>[/<action>][/<id>]', array(
'lang' => 'sk',
'presenter' => 'Domov',
'action' => 'default',
'id' => 0
));
$router[] = new Route('<presenter>/<action>/<id>', array(
'presenter' => 'Domov',
'action' => 'default',
'id' => 0
));
$router[] = new Route('<presenter>/<action>[/<id>]', 'Domov:default');
return $router;
}
?>
- Zdeno1981
- Člen | 115
iNviNho napsal(a):
Ja som to iba spustil enterom, prebliklo to a ihned sa to zatvorilo…
Tak to je samozřejmě špatně, to že to pouze probliklo to nemuselo nic udělat, spusť to v shellu, ať vidíš průběh kontroly, nastavení použij jak psal romiix.org
romiix.org napsal(a):
php.exe cesta_k_Nette_tools\Code-Checker\code-checker.php -d cesta\k\priecinku\s\aplikaciou
Editoval Zdeno1981 (12. 12. 2013 10:27)
- iNviNho
- Člen | 352
Ok chalani, opravil som to.
Web mám aj na PC aj v NB aj na hostingu. Kým som bol v škole, tak som cez NB cez total comander upravoval nejaké veci v preenteroch a nechcelo sa mi to downloadovať do NB a upravovať.
Dneska som prišiel domov a zazálohoval web, čo mám na PC. Kopíroval som jednotlivé zložky a čakal kedy nastane ta chyba. Nastal v Presenter→ ProduktyPresenter.php. Tie presentery majú takú istú veľkosť, ale jeden fungoval a jeden nie.
Ak sa niekomu chce môže tento chybý presenter prejsť code checkerom a
povedať mi kde bola chyba?
http://www.sendspace.com/file/rxmxc5
Ďakujem za váš čas, pomohli ste mi!
- Zdeno1981
- Člen | 115
Klasický BOM, nedoporučuji editovat soubory přímo na serveru přes TC.
Running in read-only mode
[FOUND] ProduktyPresenter.php contains BOM
[FOUND] ProduktyPresenter.php 383 bytes of whitespaces
[WARNING] ProduktyPresenter.php Mixed tabs and spaces indentation on line 4.
Editoval Zdeno1981 (12. 12. 2013 22:07)
- Pavel Macháň
- Člen | 282
iNviNho napsal(a):
Ok chalani, opravil som to.
Web mám aj na PC aj v NB aj na hostingu. Kým som bol v škole, tak som cez NB cez total comander upravoval nejaké veci v preenteroch a nechcelo sa mi to downloadovať do NB a upravovať.
Dneska som prišiel domov a zazálohoval web, čo mám na PC. Kopíroval som jednotlivé zložky a čakal kedy nastane ta chyba. Nastal v Presenter→ ProduktyPresenter.php. Tie presentery majú takú istú veľkosť, ale jeden fungoval a jeden nie.
Ak sa niekomu chce môže tento chybý presenter prejsť code checkerom a povedať mi kde bola chyba?
http://www.sendspace.com/file/rxmxc5Ďakujem za váš čas, pomohli ste mi!
Ze zvědavosti sem si to stáhnul a .....
- statické třídy modelů
- v actionKategoria si nastavíš $this->sql = $sql (z modelu) našel sem ji až v zistiPotomkovKategorie… co když tu metodu použiješ v nějaké jiné akci ? … buch $this->sql = null … když už tak $sql mít v parametru metody (budeš mít jistotu, že ji té metodě opravdu dodáš a né že se tam nějak záhadně dodá od jinud)
- \Nette\Utils\Strings … importuj si to tam… bez neustálehé opakování namespace to bude čitelnější
- signál handleStiahniKatalog() … používáš tam globální proměnou WWW_DIR … nedoporučuju
- metoda hladaj($form) … divím se, že se vtěch true, false vyznáš :)
Promiň ale chybu bych vtomdle fakt nenašel
- iNviNho
- Člen | 352
Zdenko Ďakujem. Poučený, ten projekt som troška dávnejšie robil a nechcelo sa mi to downloadovať.
To Eifel:
- Nerozumiem. To je zlé? Tak som sa to naučil a tak to robím už asi trištvrte roka.
- Takto. zistiPotomkovKategorie volám asi 100krat v template kvoli rekurzivnemu menu a ak by som v tejto metode stale sa odvolaval na dotaz do DB, zabralo by to čas. Preto viem, že toto použijem iba ak budem v tej metode, preto som si to naplnil tam, určite by som to dalo spraviť aj v stratUpe
- Určite, súhlasím!
- Vytvoril som si viac takýchto globálnych premenných a zatial som s tým nemal problém. Ako by si to riešil ty? BasePath?
- Neveril by si, ale fakt sa v nich vyznám. Kebyže ti ukážem kod na vyhladavanie tu http://ekotrim.sk/…zit-inzeraty tak sa budeš čudovať:D (zobrazuje tam geocode chybu, pretože volám pri každom inzeráte geocode, prerobím a uložím pri vložení do DB a potom budem ťahať iba z DB) Chcel som si to napísať sám a mať nad tým absolútnu kontrolu.
Hladali sme chybu v BOM o kodik nešlo, ale Ďakujem za pripomienky, určite sa rád niečo nové naučím.
Editoval iNviNho (12. 12. 2013 22:30)