Problém s interpretací adresy
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Rampa
- Člen | 65
Ahoj všem.
Narazil jsem na zajímavý úkaz, se kterým si nějak nevím rady…
mám jakési menu (v layoutu, který je stejný pro všechny šablony):
<script>
<a href="{plink Aukce:new}">Nová aukce</a>
<a href="{plink Aukce:default 'stavAukce'=>null}">Přehled aukcí</a>
<a href="{plink Adresy:edit}">Nová adresa</a>
<a href="{plink Adresy:default}">Adresy</a>
</script>
a routy:
<?php
$router = $application->getRouter();
$router[] = new Route('index.php', array(
'presenter' => 'Default',
'action' => 'default',
), Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>/<id>', array(
'presenter' => 'Default',
'action' => 'default',
'id' => null
));
?>
to mi vygeneruje odkazy:
<script>
<a href="/aukce/document_root/aukce/new/">Nová aukce</a>
<a href="/aukce/document_root/aukce/">Přehled aukcí</a>
<a href="/aukce/document_root/adresy/edit/">Nová adresa</a>
<a href="/aukce/document_root/adresy/">Adresy</a>
</script>
to by mělo být v pořádku. Ale když kliknu na odkaz Nová adresa, prohlížeč se chce vrhnout na adresu:
<?php
http://localhost/aukce/document_root/%EF%BB%BF/aukce/document_root/adresy/edit/
?>
Dělá to jen u tohoto jednoho odkazu a pouze pokud nejsem v presenteru
Adresy.
Pokud nejdřív odkliknu odkaz na Adresy a tam dám
Nová adresa, tak to šlape… :(
- Ondřej Mirtes
- Člen | 1536
To mi přijde jak UTF-8 BOM (dokonce ty znaky tomu odpovídají). Nastav si adresu v tomto skriptu a spusť ho nad tím projektem:
<?php
run_fix(dirname(__FILE__) . "/Skeleton");
echo "Fixing finished.";
function fix_bom($fn) {
$file = fopen($fn, 'rb+');
if ($file) {
$bom = fread($file, 3);
if ($bom == ( chr(0xEF) . chr(0xBB) . chr(0xBF) )) {
echo "Found BOM in $fn <br />\n";
$data = '';
while (!feof($file)) $data .= fread($file, 8192);
rewind($file);
fwrite($file, $data);
}
fclose($file);
}
}
function run_fix($dir) {
$mydir = opendir($dir);
while ($fn = readdir($mydir)) {
if (!is_dir($dir . '/' . $fn)) {
fix_bom($dir . '/' . $fn);
} else if ($fn != '.' && $fn != '..' && $fn != '.git'){
run_fix($dir . '/' . $fn);
}
}
}
Editoval Ondřej Mirtes (28. 1. 2010 13:40)