Twitter bootstrap 如何在Cake PHP视图中使用供应商文件(通过Composer安装)?
我这里有一个问题,我觉得有一个简单而干净的解决方案,我还没有找到。。。 我的Cake PHP应用程序如下所示:Twitter bootstrap 如何在Cake PHP视图中使用供应商文件(通过Composer安装)?,twitter-bootstrap,cakephp,composer-php,Twitter Bootstrap,Cakephp,Composer Php,我这里有一个问题,我觉得有一个简单而干净的解决方案,我还没有找到。。。 我的Cake PHP应用程序如下所示: { "name": "MyProject", "version": "0.0.0", "require": { "php": ">=5.5.11", "cakephp/cakephp": "2.6.3", "composer/installers": "*", "twbs/bootstrap": "3.3.4", "components/j
{
"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.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忽略引导的给定安装路径,因为包没有类型…使用
tws/bootstrap
将需要额外的步骤来安装这些资产。这通常通过符号链接或复制来完成
例如,将引导添加到Symfony2时,您需要
"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": "*"
}
}
然后使用enableCakePlugin::load('BoostCake')
并添加所需的帮助程序
正如@ndm所指出的:您还可以决定使用Composer“bridges”与其他资产管理公司合作(间接)。其中之一是
或者你也可以直接与这些资产管理公司合作,比如鲍尔、npm 在
composer.json
中,使用数组
至少在CakePHP 3.0中,这是预先构建的,如下所示:
"scripts": {
"post-install-cmd": "App\\Console\\Installer::postInstall",
"post-autoload-dump": "Cake\\Composer\\Installer\\PluginInstaller::postAutoloadDump"
},
post-install cmd
脚本从/src/Console/Installer.php
调用postInstall
函数
如果您查看该函数,您可以看到它在安装后正在执行一些操作,例如设置文件权限
在这里,您可以执行任何其他需要的操作,例如构建一个函数,使用标准PHP函数(如或(移动))将文件从
/vendor/
文件夹复制到webroot文件夹。对于前端依赖项,使用composer没有多大意义,您最好使用类似的工具。您可能是对的,但由于我必须使用Composer,所以我使用它并安装了2个PackageManager,这对我来说似乎很奇怪…如果您问我,没有什么奇怪的,请不要忘了Composer天生就是一个PHP依赖关系管理器,您会一直遇到非PHP软件包的问题,导致必须使用自定义安装程序或类似程序。无论如何,检查()或者我看到了您的方法,我不认为您在默认设置上是错误的,但是必须有一个特定的解决方案来解决这个问题,因为cake php自然支持composer。如果不是这样的话,整个composer cake symbiosys将毫无意义,除了与composer一起安装cake,仅此而已。我添加的每个packagemanager都必须安装在服务器上,这对我来说很糟糕。:)除了使用自定义composer安装程序(适用于通用软件包或垫片安装程序-有什么原因不能使用此选项吗?)、复制/链接文件或使用其他依赖项管理器之外,没有其他解决方案,您可能不喜欢它,但这就是它的简单方式。蛋糕本身难道没有办法吗?