2014-05-18 3 views
6

In meiner Anwendung, um eine Datei in ein bestimmtes Verzeichnis verschieben muss ich Öffentlichen Ordner Pfad in Controller-Aktion. Ich lese diese Art von Lösung anders, aber nicht einfach. Ich weiß, dass im Blick können wir leicht öffentlichen Ordner Weg mit $this->basePath(); View Helper bekommen. Ich möchte das genau in der Controller-Aktion. Jeder kann mir helfen, wie ich das erreichen kann. Danke im Voraus.Zend 2 :: Öffentliche Ordner-Pfad oder basePath() leicht in Controller-Aktion

Antwort

12

index.php setzt das aktuelle Arbeitsverzeichnis auf Sie Anwendungsstamm (der Ordner mit composer.json, init_autoloader.php, etc.)

Solange Sie nicht chdir an anderer Stelle in Ihrer Anwendung aufgerufen haben, können Sie getcwd() nennen und es wird Gib den Pfad immer zum App-Root zurück.

Da die öffentlichen Ordner, dass relativ ist, können Sie den Pfad bekommen ...

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

Sie View Helfer aus einem Controller in ZF2 verwenden könnte, wie es here und here gezeigt. Sie können dies für Ihren Fall versuchen:

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

Ich hoffe, das ist, was Sie suchen!

2

In Ihrem öffentlichen Ordner bearbeiten Ihre Datei index.php Namen hinzufügen, nur zwei Zeilen

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

Sie in Ihrem Code wie

print_r(BASE_PATH); 
print_r(PUBLIC_PATH); 
0

verwenden können, wenn Sie eine Datei von der Öffentlichkeit aufgenommen werden sollen Ordner (unabhängig mit dem Speicherort der Datei index.php): include_one ("./public/your-file.php");

0

Sie sollten dies versuchen, wenn Sie den öffentlichen Ordner wollen:

$publicPath = $_SERVER['DOCUMENT_ROOT']; 

Oder diese versuchen, wenn Sie die basepath wollen:

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