を与えなしのインスタンスでなければならない私は、次のコントローラがあります。Zendの2注入:キャッチできる致命的なエラー::: __構築物()someControllerに渡される引数1の...
namespace Application\Controller;
use Application\Model\Person;
use Zend\Mvc\Controller\AbstractActionController;
use Application\Model\PersonTable;
class PersonController extends AbstractActionController
{
private $table;
public function __construct(PersonTable $table)
{
$this->table = $table;
}
// other methods
}
を私がやってみましたここでのドキュメントに従って、インジェクション:モジュール/アプリケーション/ Module.phpで
https://docs.zendframework.com/tutorials/getting-started/database-and-models/
私はこの機能を追加しました:
public function getControllerConfig()
{
return [
'factories' => [
Controller\PersonController::class => function($container) {
return new Controller\PersonController(
$container->get(Model\PersonTable::class)
);
},
],
];
}
をモジュール/アプリケーション/設定/ module.config.phpで
それは私のコントローラを持っているでしょうので、私は、これを変更:
'controllers' => array(
'invokables' => array(
'Application\Controller\Index' => 'Application\Controller\IndexController',
'Application\Controller\Person' => 'Application\Controller\PersonController'
),
),
私はコンソールからコントローラメソッドを呼び出すとエラーが表示されます。
キャッチ可能な致命的なエラー:引数1がApplication \ Controller \ PersonControlに渡されました ler :: __ construct()はApplication \ Controller \ PersonTableのインスタンスでなければなりません。 neはE:\ other \ dropbox \ dropbox \ programavimas \ kodo pavyzdziai \ htdoc \ zend_2_staff_register \ vendor \ zendframework \ zendframework \ library \ Zend \ ServiceM anager \ AbstractPluginManager.phpは170行目で、E:¥other¥dropbox¥Droに定義されています pbox \ programavimas \ kodo pavyzdziai \ htdocs \ zend_2_staff_register \ module \ Applicati on \ src \ Application \ Controller \ PersonController.php on line 12
なぜ注射しないのですか?工場: