如何在Cake PHP视图中使用供应商文件(通过Composer安装)



我这里有一个问题,我觉得有一个简单干净的解决方案,但我还没有找到。。。我的Cake PHP应用程序如下:

  • 项目文件夹
    • 应用程序
    • 供应商
    • composer.json

CakePHP和我想要使用的外部文件安装在vendor文件夹中。在供应商那里,我有一个twitter bootstrap包,它有一个css和一个js文件,我想在我的视图中包括它,但它是不可访问的,因为这些文件不在我的Cake PHP项目的webroot文件夹中。现在我的问题是——如何在我的Cake PHP项目中访问这两个文件,而不将它们复制到webroot文件夹?使用符号链接在我看来有点像肮脏的黑客。。。必须有一个干净的解决方案,否则在Composer中使用CakePHP将毫无意义。我的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"
}

Btw:composer忽略给定的bootstrap安装路径,因为包没有类型。。。

使用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": "*"
    }
}

然后使用enable CakePlugin::load('BoostCake');并添加所需的助手。

正如@ndm所指出的:你也可以决定使用Composer"桥梁"来连接其他资产管理公司(间接)。其中之一是https://github.com/francoispluchino/composer-asset-plugin

或者你可以直接与这些资产管理公司合作,比如bower、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函数。

如果你看一下这个函数,你会发现它在安装后做了一些的事情,比如设置文件权限。

在这里,您可以做任何其他需要的事情,例如构建一个函数,将文件从/vendor/文件夹复制到您的webroot文件夹,使用标准的PHP函数,如复制或重命名(移动)。

相关内容

  • 没有找到相关文章

最新更新