0

私は symfony2 が初めてで、カスタム クラスにサービスを挿入するのに苦労しています。シナリオは次のとおりです。バンドルで、フォルダーとその中にクラスを作成しました。そのバンドルでは、services.yml に次のコードがあります。

parameters:
    rc2ab_model.class: rc2ab\ShareBundle\Model\Rc2abModel
services:
    rc2ab_model:
        class: "%rc2ab_model.class%"
        arguments: ["@doctrine.orm.entity_manager"]

カスタムクラスのコンストラクタです

public function __construct($em) {

}

この後、DefaultControllerにRc2abModelクラスのオブジェクトを作成すると

$myObj = new Rc2abModel();

エラーが発生します:

Warning: Missing argument 1 for rc2ab\ShareBundle\Model\Rc2abModel::__construct(), called in Default Controller....

私はこれを解決できません。彼らのサイトのドキュメントを読んだので、ドキュメントのリンクを提供しないでください。ここで他の解決策を試しましたが、何もうまくいかないようです。よろしくお願いします。

4

1 に答える 1

2

サービスはコントローラーでそのように呼び出されます。自分で初期化する必要はありません:

$myObj = $this->get('rc2ab_model');

サービス登録から指定された引数を持つオブジェクトが生成されます^^

これを今すぐ試してください:

echo get_class($this->get('rc2ab_model')); exit;

// Display :
rc2ab\ShareBundle\Model\Rc2abModel
于 2013-10-19T10:44:20.083 に答える