2017-12-09 15 views
0

私はモバイルマネーを統合したいSymfonyアプリケーションを持っています。問題は、私は小枝ファイルにPHPコードを追加することができないと私はこの種の挑戦の完全な初心者です。コード読み取りますモバイルマネーのSymfonyへの統合

<?php 

require_once '/path/to/monetbil-php/monetbil.php'; 

// Setup Monetbil arguments 
Monetbil::setAmount(500); 
Monetbil::setCurrency('XAF'); 
Monetbil::setLocale('en'); // Display language fr or en 
Monetbil::setPhone(''); 
Monetbil::setCountry(''); 
Monetbil::setItem_ref('2536'); 
Monetbil::setPayment_ref('d4be3535f9cb5a7aff1f84fa94e6f040'); 
Monetbil::setUser(12); 
Monetbil::setFirst_name('KAMDEM'); 
Monetbil::setLast_name('Jean'); 
Monetbil::setEmail('[email protected]'); 

// Start a payment 
// You will be redirected to the payment page 
Monetbil::startPayment(); 

私はアプリケーション/リソース/ビュー/メンバー/ dashboard.html.twigにこれを追加することで探しています

おかげ

答えて

0

小枝は、あなたの出力をレンダリングするメンターです。あなたの(PHP)ロジックをcontrollerに入れて、独自のserviceを作成してください。あなたのコントローラーから、必要な変数を使ってTwigテンプレートをレンダリングするだけで、ユーザーに表示したい出力をレンダリングすることもできます。

0

symfonyのようなフレームワークを使用している場合は、require_onceを使用しないでください(いくつかの例外を除く)。オートローディングと依存性注入について読む(Symfony.comには優れた記事がある)

何らかの理由により、monetbil-php librarycomposerを使用しません。理由は分かりませんが、私は3つの理由を想像することができます:彼らはそれが何であるか(2017年のこんにちは開発者!)、彼らは他の開発者を嫌うか、図書館は何年も更新されていません。最近のコミットにもかかわらず、それは非常に時代遅れの図書館のように見えます(なぜPHP 5.2をサポートしているのですか?それは暗黒時代のものです)。このやりかたで少し冗談を言って申し訳ありませんが、質問に戻る。

今のところ、ファイルをプロジェクトにコピーし、ファイルに名前空間を付けてプロジェクトで使用します。私がan issue hereを開いたのは、開発者がSymfonyのようなフレームワークで自分たちのライブラリを使いたい場合、作者ファイルを追加するべきだと思うからです。

TwigでPHPを使用することはできませんし、可能であってもPHPコードはコントローラ内にある必要があります。 Monetbilはビジネスロジックを定義しているため、テンプレートには入れないでください。お使いのコントローラでそれを使用するには

/** 
* Pay the bill 
* 
* @Route("/pay/{id}", name="payment") 
* @Method("POST") 
* @param Request $request 
* @param Order $product 
* 
* @return JsonResponse 
* @throws \Exception 
*/ 
public function payAction(Request $request, Order $product) 
{ 
    Monetbil::setAmount(500); 
    //.. 
    Monetbil::startPayment(); 
} 

コメントによると、startPayment()はリダイレクトされますので、小枝テンプレートに戻るには何もありません。

(*)テンプレート内のビジネスロジックは悪い習慣とみなされますが、あまりにも多くのビジネスロジックをコントローラに入れすぎないようにする必要があります。この例を使用している場合は、ビジネスロジックをフレームワークに依存しない方法で定義できるように、サービスについて読んでみてください。それはあなたのアプリケーション(単体テスト、Symfonyのアップデート、おそらく別のフレームワークへの切り替え)を維持しやすくします。

+0

ありがとう、入力用の@Stephan。私はそれをよく読んでいます。あなたが理解していれば、このPHPコードを自分のコントローラに書き込んで私ができるはずです。ユーザーインターフェイスで「有料」をクリックすると、これが発生することを確認するにはどうすればよいですか?この種の質問には申し訳ありませんが、私はsymfonyの新機能はすべて非常に新しいと言いました。 – Brun0L3z

+0

更新された回答をご覧ください。フォームはこのアクションに提出する必要があります。

' –

+0

のようなものありがとう、私は名前空間を持つコントローラを作成し、フォームを作成して、エラーの私は本当にこの統合で多くの問題に直面するつもりです。料金を払って助けてくれますか? (これがここで合法かどうか分からないでください)*必死にしてください* – Brun0L3z