使用正确的路径
在 PluginName 插件中获取 webroot 资产的正确路径是:
/plugin_name/路径
IE:
- 文件路径:
App/Plugin/Corporate/webroot/img/image.png
- 网址:
/corporate/img/image.png
在 CakePHP 的早期版本中,资产调度是自动的,而在 2.2+ 版本中,资产调度必须显式启用。
处理插件资产的正常方法是不使用资产调度过滤器并将文件复制(或符号链接)到与 url 对应的相同路径中的应用程序 webroot 即:
cd App
cp -R Plugin/Corporate/webroot webroot/corporate
这意味着请求的 url 直接映射到应用程序 webroot 文件夹中的文件 - 在提供这些文件时没有调用 php 逻辑,这有利于显着加快提供此类资产的速度。
处理javascript中的路径
如果应用程序始终安装为域的根 ( http://example.com
),则绝对没有复杂性 - 只需参考图像的相对路径:
var imagePath = '/corporate/img/image.png';
但是,如果应用程序的根是可变的(http://example.com/
, http://exmaple.com/sub/folder/
, http://localhost/someproject/
) - 有必要告诉javascript 考虑应用程序的根。例如将以下内容放入布局文件中:
<head>
...
<script>ROOT = '<?= $this->Html->url('/'); ?>';</script>
</head>
<body>
<?= $this->fetch('content'); ?>
...
</body>
这样,javascript 可以在ROOT
任何地方引用全局来知道根 url 是什么,如下所示:
var imagePath = ROOT . 'corporate/img/image.png';
这使得无论应用程序如何安装都可以使用相同的 javascript。