如何在cakephp中获取app目录?

时间:2016-06-07 18:22:20

标签: cakephp

我正在使用cakephp 2.6.7。 我可以通过cakephp获取webroot文件夹的文件,如下所示:

<script src="<?php echo $this->webroot; ?>assets/frontend/layout/scripts/layout.js" type="text/javascript"></script>

这里$this->webroot;返回路径直到webroot。但如果我想得到应用程序的路径如何做到这一点?即:我想获得一个位于以下位置的文件: 应用程序/供应商/ ajaxLiveSearch / JS / ajaxlivesearch.js

我尝试如下:

<script src="<?php echo $this->app; ?>Vendor/ajaxLiveSearch/js/ajaxlivesearch.js" type="text/javascript"></script>

这里我想要的是:通过$ this-&gt; app获取app文件夹的路径。但这不是正确的方法。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

要访问app目录,您可以使用cakephp定义的常量APP_DIR 对于你的情况,这应该是

<script src="<?php echo APP; ?>Vendor/ajaxLiveSearch/js/ajaxlivesearch.js" type="text/javascript"></script>

请检查并告诉我任何问题

答案 1 :(得分:0)

使用助手

应始终使用帮助程序链接到文件,而不是常量。无论应用程序的安装方式如何,使用帮助程序都可确保正确的路径。例如。使用HtmlHelper::script,在子文件夹中安装了应用程序:

echo $this->Html->script('/assets/frontend/layout/scripts/layout.js');

将输出:

<script type="text/javascript" href="/subfolder/assets/frontend/layout/scripts/layout.js"></script>

如果应用程序安装在根目录中,则会省略/subfolder前缀,路径仍然是正确的。

只能访问webroot文件夹

  

我想获取一个位于以下位置的文件:app / Vendor / ajaxLiveSearch / js / ajaxlivesearch.js

这根本行不通。 default rewrite rules仅允许访问webroot文件夹;这是设计,因为通过短路框架和直接访问应用程序期望的私有文件来防止意外行为或漏洞利用。

要访问不在webroot中的文件,将其移动或复制到webroot,以便 可以访问。

e.g:

cd /my/app/webroot
ln -s ../Vendor/ajaxLiveSearch ajaxLiveSearch

要非常小心,不要让您无法访问的文件。