Kodowanie ścieżek

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ł

Może skożystanie z yii\helpers\BaseFileHelper pomoże. Szukałem klasy DirectoryHelper w Yii2 i nie mogłem znaleźć skąd ja masz ?

Polskie znaki w folderach i urlach to proszenie się o problem właśnie tego typu. Zalecałbym używać slugów albo stosować urlencode przed utworzeniem url i urldecode po odczytaniu.

Gdybym ja tworzył ten system bez zastanawiania się bym tak zrobił- jednak działa już produkcyjnie i naprawić trzeba ;/

Zgaduję, że poprzednik to zrobił- system robiony jeszcze na Yii 1.1. W końcu dokumentacja jest dla "lamerów"… ;/

Jakieś pomysły na rozwiązanie problemu, a nie przebudowanie?