我在这里遇到了一个问题,我感觉有一个简单而干净的解决方案,我还没有找到…
我的Cake- PHP-Application看起来像这样:
我的Cake- PHP-Application看起来像这样:
>项目文件夹
> app
>供应商
> composer.json
Cake-PHP和我想要使用的外部文件安装在vendors-folder中.
在供应商中,我有一个twitter bootstrap包,它有一个css-和一个js文件,我想包含在我的视图中,但它不可访问,因为那些文件不会保留在我的Cake的webroot-Folder中-PHP项目.
现在我的问题是 – 如何在Cake-PHP项目中使这两个文件都可访问,而不将它们复制到webroot文件夹?使用符号链接对我来说有点像脏黑客…
必须有一个干净的解决方案,因为否则使用Cake-PHP与Composer将没有任何意义.
我的composer.json看起来像这样:
{ "name": "MyProject","version": "0.0.0","require": { "PHP": ">=5.5.11","cakePHP/cakePHP": "2.6.3","composer/installers": "*","twbs/bootstrap": "3.3.4","components/jquery": "2.1.3" },"extra" : { "installer-paths":{ "plugins/{$name}":["type:cakePHP-plugin"],"app/webroot/bootstrap":["twbs/bootstrap"] } },"config": { "vendor-dir": "vendors" }
顺便说一句:composer忽略了bootstrap的给定installpath,因为包没有类型……
解决方法
使用tws / bootstrap将需要额外的步骤来安装这些资产.这通常通过符号链接或复制来完成.
例如,在向Symfony2添加Bootstrap时,您需要
"require" : { "mopa/bootstrap-bundle": "dev-master","twbs/bootstrap": "dev-master",},"scripts": { "post-install-cmd": [ /* sensio commands **/ "Mopa\\Bundle\\BootstrapBundle\\Composer\\ScriptHandler::postInstallSymlinkTwitterBootstrap" ],"post-update-cmd": [ /* sensio commands **/ "Mopa\\Bundle\\BootstrapBundle\\Composer\\ScriptHandler::postInstallSymlinkTwitterBootstrap" ] },
一个包是资产本身,其他包为资产提供集成和“postInstall”处理程序.
对于Cake,您必须找到执行tws / boostrap安装工作的包 – 也许这样的包在Cake社区中.
但我建议使用更简单的东西,它开箱即用:
{ "require": { "slywalker/boost_cake": "*" } }
然后使用启用CakePlugin :: load(‘BoostCake’);并添加您需要的帮助程序.
正如@ndm指出的那样:您还可以决定使用Composer“桥梁”与其他资产经理(间接).其中一个是https://github.com/francoispluchino/composer-asset-plugin
或者您可以直接与bower,npm等资产经理合作.