2016-04-19 3 views
1

Symfonyアプリケーションのコントローラからサービスクラスをロードする際に問題が発生しています。Symfonyでのサービスのインスタンス化の問題

サービスはReadathonBundle\Payments\Ipnに常駐:

namespace ReadathonBundle\Payments; 

class Ipn 
{ 
    private $testVariable; 

    /** 
    * Ipn constructor. 
    * @param $testVariable 
    */ 
    public function __construct($testVariable) 
    { 
     $this->testVariable = $testVariable; 
    } 
} 

私はservices.ymlのconfigの設定を追加しました:

parameters: 
    app.ipn.testVariable: test-value 

services: 
    app.form.registration: 
     class: ReadathonBundle\Form\UserType 
     tags: 
      - { name: form.type, alias: app_user_registration } 

    app.ipn: 
     class: ReadathonBundle\Payments\Ipn 
     arguments: ['%app.ipn.testVariable%'] 

私は以下を使用して、私のコントローラでサービスを呼び出すようにしようとしていますスニペット:

class PayPalIPNController extends Controller 
{ 
    /** 
    * PayPal IPN 
    * 
    */ 
    public function listenerAction(Request $request) 
    { 
     $ipn = $this->get('app.ipn'); 

     var_dump($ipn->testVariable); 

    } 

この結果、folメッセージ:

名前空間 「ReadathonBundle \ Payments」からクラス「Ipn」をロードしようとしました。別の名前空間 の "使用"ステートメントを忘れましたか?

私はどこかで単純なものを逃してしまったと感じていますが、私の指をそれに置くことはできません。

問題はどこですか?

+3

正しいディレクトリ構造はありますか?投稿できますか?また、オブジェクトのプライベートプロパティを読み取ろうとしています。それは正しくなく、うまくいかないでしょう。カプセル化について読む。最後に、この例外は 'Ipn'クラスをロードしようとしているコードがないので別の場所からスローされます。 –

+1

@MichaelSivolobovが指摘しているように、あなたのディレクトリ構造を確認すると、それはタイプミスかもしれません。クラスはデフォルトのディレクトリ構造に従って 'src/ReadathonBundle/Payments/Ipn.php'になければなりません。また、プロダクションに参加している場合は、キャッシュをクリアすることを忘れないでください。 – chalasr

答えて

0

これは非常に長い間私を傷つけるでしょう。私はこの問題に関してほとんどの日を過ごしました...

サービスクラスファイル名* facepalm *の最後に.phpがないため、動作しませんでした。

関連する問題