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
Zend 2 :: pobieranie ścieżki katalogu publicznego lub basePath() z łatwością w działaniu kontrolera
Odpowiedz
index.php
ustawia bieżący dir roboczą do was korzenia aplikacji (folder zawierający composer.json
init_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';
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!
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);
Jeśli chcesz dołączyć plik z publicznego folder (niezależność z lokalizacją pliku index.php): include_one ("./public/your-file.php");
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']);