Silverstripe Omnipay缺少课程
在一个新鲜的苏格兰威士忌盒上(我通常推荐) 还有这位作曲家:Silverstripe Omnipay缺少课程,silverstripe,omnipay,Silverstripe,Omnipay,在一个新鲜的苏格兰威士忌盒上(我通常推荐) 还有这位作曲家: { "name": "silverstripe/installer", "description": "The SilverStripe Framework Installer", "require": { "php": ">=5.3.3", "silverstripe/cms": "3.5.1", "silverstripe/framework": "3.
{
"name": "silverstripe/installer",
"description": "The SilverStripe Framework Installer",
"require": {
"php": ">=5.3.3",
"silverstripe/cms": "3.5.1",
"silverstripe/framework": "3.5.1",
"silverstripe/reports": "3.5.1",
"silverstripe/siteconfig": "3.5.1",
"silverstripe-themes/simple": "3.1.*",
"silverstripe/silverstripe-omnipay": "^2.1",
"omnipay/paymentexpress": "^2.2",
"firebase/php-jwt": "^4.0"
},
"require-dev": {
"phpunit/PHPUnit": "~3.7@stable"
},
"extra": {
"branch-alias": {
"3.x-dev": "3.5.x-dev"
}
},
"config": {
"process-timeout": 600
},
"prefer-stable": true,
"minimum-stability": "dev"
}
并使用payment.yml from
Silverstripe生成支付,但不包括Omnipay类。我以前使用过Omnipay和SS,没有任何问题
有人知道发生了什么吗?你会犯什么错误?你是如何尝试访问这些类的 您应该能够像这样调用类(取决于Omnipay版本)
确保在命令行上运行以下命令:
$>。/framework/sake-dev/build-flush=all
同样,如果您使用的是F/S而不是memcache或其他类似的工具,那么就应该将SS'cache(您使用的是Vagrant,所以假设这是一个Dev env)的内容吹走,它通常位于/tmp中,然后再次运行Dev/build。这将清除和重建缓存,并在此过程中告诉SS它可以使用的所有新类。利用它的许多文件,恰好ServiceFactory是其中之一,因此为了让SilverStripe找到要包含的正确文件,您必须在您打算使用ServiceFactory的文件顶部指定其用途
在您安装composer
之后,应该有一个omnipay
文件夹(silverstripe omnipay模块),并且phpleague omnipay类应该在vendor
中……不是这样吗?是的@bummzack,所有文件都在那里。在它们的顶端回响没有任何作用,它们被忽略了。我曾希望找到一种方法来跟踪生成类清单的过程,这样我就可以查看是权限还是策略之类的。。。刚刚被难住了。你能发布一些失败的示例代码以及运行该代码时收到的错误消息吗?嘿@theruss,这发生在一个新的流浪者盒子上,所以我不确定如何缓存任何东西。。。命令行dev/build flush=all与通过URL调用它有什么不同吗?已经做了几次…好的,我们已经确定您有一个清晰的缓存,您已经运行了composer安装,但是您是否运行了composer更新?运行composer安装时,它会获取composer.lock文件的内容,但除非运行composer update,否则composer.lock不会使用omnipay软件包数据进行更新。更好的做法是根本不手动编辑composer.json,而是使用composer require/。我会遇到类似“致命错误:未找到类'ServiceFactory'”这样的错误-您的示例看起来像是在使用没有Silverstripe Omnipay的Omnipay,因为您包括了“使用Omnipay\Omnipay”,这在我的其他实现中是不必要的,因为我们从不直接给Omnipay打电话,而是通过SS“Payment”和“PurchaseService”课程。是的,说真的。使用composer require而不是手动破解composer.json可能会解决这个问题。如果是其他问题,你会在论坛上看到,其他人也有同样的问题。(我还没想过,但这样的问题不太可能长期得不到解决。
<?php
use Omnipay\Omnipay;
class PaymentPage extends Page
{
function ...
{
try {
$response = $gateway->purchase([...
}
}