【问题标题】:Joomla 3.xx - how to uninstall and install component or package programmaticallyJoomla 3.xx - 如何以编程方式卸载和安装组件或包
【发布时间】:2017-10-24 14:22:13
【问题描述】:

通常当您想要卸载或安装组件、包、插件或模块时,您通常在 Joomla 管理界面中手动执行此操作。

在这种情况下,我正在寻找一种直接从 PHP(在 Joomla 框架内)以编程方式卸载和安装组件或包的方法,可能来自系统插件。

所以基本上我想以编程方式启动软件包的卸载和安装过程,以便卸载和安装所有组件、模块、插件等,就像通常通过卸载和安装来卸载和安装一样从 Joomla 管理员中手动打包。

谁能给我一个提示,我将如何实现这一点,最好使用 Joomla 的核心类特定功能。

我试图通过搜索各种 Joomla 文档来找到有关此的信息,但到目前为止没有运气。

更新 我已经找到了从 Joomla 管理员安装和卸载扩展时使用的核心模型文件。

我在这个类文件中找到了一个可以用来从插件中卸载扩展的函数: /administrator/components/com_installer/models/manage.php

函数是:“remove($eid = array())”作为类的一部分:“InstallerModelManage”扩展“InstallerModel”

我还在这个类文件中找到了一个用于从插件安装扩展的函数: /administrator/components/com_installer/models/install.php

函数是:“install()”作为类的一部分:“InstallerModelInstall”,它扩展了“JModelLegacy”

现在我只需要找到将这些函数包含在我的插件文件中的最佳(正确)方法,以便我可以执行 remove($eid = array()) 和 install()

【问题讨论】:

    标签: joomla3.0 joomla-extensions


    【解决方案1】:

    这就是你的称呼。

    JModelLegacy::addIncludePath(JPATH_ROOT . '/administrator/components/com_installer/models');
    $model = JModelLegacy::getInstance('Install', 'InstallerModel');
    $model->install();
    

    但它会从输入中获取一些数据。所以你必须提前准备好

    $input = JFactory::getApplication()->input;
    $input->set('installtype', 'url');
    $input->set('install_url', 'path/to/instalation/asyou/would/enter/it/in/installation/interface');
    

    【讨论】:

    • 我会尽快检查一下
    猜你喜欢
    • 1970-01-01
    • 2012-02-04
    • 2015-08-10
    • 2011-10-12
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    相关资源
    最近更新 更多