Witam,
napotkałem na problem z kodowaniem polskich znaków w ścieżkach katalogów. Testowałem niemal każdym kodowaniem- nic nie przyniosło porządanego efektu. Program działa następująco: Wchodzę w moduł e-teczka, tam listują mi się katalogi w folderze użytkownika(np. ąąąą_żżżżżżż_00000000000)
public function actionEteczka()
{
if (isset($_GET['directory']))
$directory = $_GET['directory'];
else
$directory = null;
$allowed = DirectoryHelper::$allowedDirs;
$allowed2 = array('Chorobowe');
$dir = new DirectoryHelper('eteczka');
if ($directory == null or $directory == 'e-Teczka') {
$data = $dir->listDirectory(KadryPracownicy::model()->userDir().'\e-Teczka');
} else {
if (in_array($directory, $allowed)) {
$data = $dir->listDirectory(KadryPracownicy::model()->userDir().'\e-Teczka\\'.$directory);
} elseif (in_array($directory, $allowed2)){
$data = $dir->listDirectory(KadryPracownicy::model()->userDir().'\e-Teczka\B_w_trakcie_zatrudnienia\\'.$directory);
} else {
$this->redirect(array('eteczka'));
}
}
// display the view
$this->render('eteczka',array('model'=>$data));
}
Tutaj metoda userDir() wew modelu KadryPracownicy
userDir(){
$usrobj = User::model()->findByPK($userid);
if (is_object($usrobj)) {
$username = $usrobj->username;
return str_replace('.', '_', iconv('utf-8', 'windows-1250', $username)).'__'.$pesel;
} else {
return '';
}
}
}
Klikając w dowolny przechodzę do jego wnętrza tutaj wyrzuca błąd o brak indexu ‘extension’- odwołanie do actionDownload- które w ogóle nie powinno być wywołane. Powinna być wywołana akcja e-teczka.
Problem pojawia sie tylko gdy katalog użytkownika posiada polskie znaki.
A tak wyglądają moj URL’e:
/site/eteczka
tutaj listuję 3 katalogi wszystko zawsze działa poprawnie
/site/download?action=eteczka&dl=Imie_Nazwisko(z polskim znakiem)__010101012345\e-Teczka\jakiś_folderek
tutaj bład
/site/eteczka?directory=jakis_folderek
tutaj poprawnie działający moduł