1

Joomla で ChronoForms v5 フォームから OmniPay を呼び出そうとしています! 3 PHP 5,6 を実行しています。私はある程度の進歩を遂げましたが、パスと名前空間に問題があり、助けが必要です。

苦労した後、Composer からフォルダー /components/com_chronoforms5/extras/omnipay/ に OmniPay をインストールしました。次のようなコードを使用して、ChronoForm のカスタム コード アクションから SecurePay パスを呼び出したいと思います。

<?php
require (JPATH_SITE.'/components/com_chronoforms5/extras/omnipay/vendor/autoload.php');
use Omnipay\Omnipay;
$gateway = Omnipay::create('SecurePay');
?>

これは部分的に機能しますが、 Class not found エラーが発生します。さらに調べたところ、Composer の autoload_classmap.php ファイルが、上記の /vendor/ フォルダーがない誤ったフォルダー パスを生成していることがわかりました。

autoload_classmap.php ファイルを変更してこれを追加すると、返された配列に正しいパスが作成されるようです。(配列が不完全であると思われますが。)私が行った変更は次のとおりです。

$vendorDir = dirname(dirname(__FILE__));
// $baseDir = dirname($vendorDir); // << replace this line
$baseDir = $vendorDir; // << with this

これらの変更により、ClassLoader オブジェクトは有効なパスを持っているように見えます。

[Omnipay\SecurePay\] => Array ( 
  [0] => /home/ . . ./components/com_chronoforms5/extras/omnipay/vendor/omnipay/securepay/src
) 

しかし、ゲートウェイを呼び出すコードでは、上記の最初のコード スニペットの $gateway = 行から致命的なエラーが返されます: Fatal error: Class 'Omnipay\Omnipay' not found

コードが別の名前空間「GCore」で実行されているという、さらに複雑な問題があります。接頭辞スラッシュのさまざまな組み合わせを試しましたが、これまでのところ成功していません。use \Omnipay\Omnipay

私は今、Composer と NameSpaces に関する非常に限られた知識が尽きたところまで来ています。任意の提案をいただければ幸いです。

4

0 に答える 0