2014-05-18 7 views
6

W mojej aplikacji, aby przenieść plik do określonego katalogu, muszę znać ścieżkę folderu publicznego w akcji kontrolera. Czytałem różne tego typu rozwiązania, ale nie było to łatwe. Wiem, że w związku z tym możemy uzyskać łatwą ścieżkę folderu publicznego przy użyciu pomocnika widoku $this->basePath();. Dokładnie tego chcę w akcji kontrolera. Każdy może mnie poprowadzić, jak mogę to osiągnąć. Z góry dziękuję.Zend 2 :: pobieranie ścieżki katalogu publicznego lub basePath() z łatwością w działaniu kontrolera

Odpowiedz

12

index.php ustawia bieżący dir roboczą do was korzenia aplikacji (folder zawierający composer.jsoninit_autoloader.php, itp)

Dopóki nie nazwali chdir gdzie indziej w aplikacji można nazwać getcwd() i to będzie zawsze zwraca ścieżkę do katalogu głównego aplikacji.

Ponieważ folder publiczny jest w stosunku do tego, można uzyskać ścieżkę za pomocą ...

$publicDir = getcwd() . '/public'; 
0

Można użyć pomocników widoku od wewnątrz kontrolera w ZF2 jak to pokazano here i here. Możesz wypróbować to dla swojego przypadku:

$renderer = $this->serviceLocator->get('Zend\View\Renderer\RendererInterface'); 
$url = $renderer->basePath('the_ressource_you_want_to_get_from_public_folder'); 

Mam nadzieję, że tego właśnie szukasz!

2

W swoim publicznym edycji katalogu plik o nazwie index.php dodać tylko dwie linie

define('BASE_PATH', realpath(dirname(__DIR__))); 
define('PUBLIC_PATH', BASE_PATH.'/public'); 

można używać w kodzie jak

print_r(BASE_PATH); 
print_r(PUBLIC_PATH); 
0

Jeśli chcesz dołączyć plik z publicznego folder (niezależność z lokalizacją pliku index.php): include_one ("./public/your-file.php");

0

Należy starać jeśli chcesz folder publiczny:

$publicPath = $_SERVER['DOCUMENT_ROOT']; 

Lub spróbuj tego jeśli chcesz basePath:

$basePath = dirname($_SERVER['DOCUMENT_ROOT']);