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
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';
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!
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);
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");
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']);