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
+
0
-

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
+
0
-

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)

odin
Člen | 50
+
0
-

To je BOM znacka UTF8 kodovani, ve rozumnych editorech se da nastavit, aby se neukladala. V tom pripade staci to staci nastavit, aby se to neukladalo a soubor proste ulozit a zmizi to.

Rampa
Člen | 65
+
0
-

Děkuji ti šlechetný gurů. Pomohlo.
Akorát to do některých souborů přidalo na konec }, takže Parse error, ale to je malá daň za funkčnost :)
Odin: používám NetBeans. Dokonce jsem zkoušel i tu řádku vymazat a napsat znova…

Editoval Rampa (28. 1. 2010 13:53)