在 OctoberCMS 插件中使用 Omnipay

Posted

技术标签:

【中文标题】在 OctoberCMS 插件中使用 Omnipay【英文标题】:Using Omnipay in OctoberCMS plugin 【发布时间】:2014-11-29 02:30:26 【问题描述】:

我正在为OctoberCMS 开发一个插件,并将使用 Omnipay。我做了一项研究,发现一些将 Omnipay 库与 Laravel 集成为 ignited/omnipay 和 barryvdh/laravel-omnipay 的软件包。我已经按照以下步骤尝试了它们(全部在插件目录中):

创建一个composer.json 文件并添加:


    "name": "BalanceRecharge Plugin",
    "email": "webmaster@root.com",
    "require": 
        #in this case I'm using barryvdh/laravel-omnipay
        "barryvdh/laravel-omnipay": "0.1.*", 
        "omnipay/omnipay": "*"
    

运行composer update 以更新库和依赖项,一切正常

'Barryvdh\Omnipay\ServiceProvider' 添加到提供者:

'providers' => array_merge(include(base_path().'/modules/system/providers.php'), array(

    // 'Illuminate\html\HtmlServiceProvider', // Example

    'System\ServiceProvider',
    'Barryvdh\Omnipay\ServiceProvider',
)),

然后尝试运行命令php artisan config:publish barryvdh/laravel-omnipay却得到如下错误:

PHP 致命错误:找不到类“Barryvdh\Omnipay\ServiceProvider” 在 /var/www/html/alomicuba/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php 在第 157 行 PHP 堆栈跟踪:PHP 1. main() /var/www/html/alomicuba/artisan:0 PHP 2.require_once() /var/www/html/alomicuba/artisan:30 PHP 3.require() /var/www/html/alomicuba/bootstrap/start.php:57 PHP 4。 Illuminate\Foundation\ProviderRepository->load() /var/www/html/alomicuba/vendor/laravel/framework/src/Illuminate/Foundation/start.php:210 PHP 5. Illuminate\Foundation\ProviderRepository->compileManifest() /var/www/html/alomicuba/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php:57 PHP 6. Illuminate\Foundation\ProviderRepository->createProvider() /var/www/html/alomicuba/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php:121

我做错了什么?注册 Provider 的正确方法是什么?

【问题讨论】:

【参考方案1】:

如果你想在插件中使用 laravel 包,你必须在 plugin.php 中注册服务提供者和别名

注册插件服务商 在 Plugin.php 的 boot() 方法中,添加

\App::register('\Third\Party\ServiceProvider');.

这是您自动注册第三方 ServiceProvider 的方式。

注册任何别名 在任何 ServiceProvider 行下的 Plugin.php 的 boot() 方法中,如果您需要添加别名,可以使用

$alias = \Illuminate\Foundation\AliasLoader::getInstance()->alias('YourAlias', 'Third\Party\Facade');

查看此链接https://github.com/Shahiem/CKeditor-plugin/blob/master/Plugin.php#L53

【讨论】:

以上是关于在 OctoberCMS 插件中使用 Omnipay的主要内容,如果未能解决你的问题,请参考以下文章

使用静态页面插件在 OctoberCMS 上导航

OctoberCMS 在前端获取插件的下拉值

如何在 octobercms 中过滤具有多个类别的博客文章?

OctoberCMS:如何在 Rainlab.User 插件中通过电子邮件设置用户帐户激活?

在设置表单上设置默认值在 Octobercms 中返回 null

带有 SEO 插件的 OctoberCMS 翻译插件不会翻译 CMS 页面和博客的 SEO 关键字