DI: Multiple services of type
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Facedown
- Člen | 38
Ahoj, potřeboval bych nějak rozlišit jednotlivé objekty v config.neon
v případě, že od sebe dědí.
Stále dostávám chybu:
Service ‚28_App_FrontModule_Forms_IItemForm‘: Multiple services of
type Front\Model\Storage\AddStorage found: 22_Admin_Model_Storage_AddStorage,
35_Front_Model_Storage_AddStorage
Přikládám části kódu:
<?php
namespace Front\Model\Storage;
class AddStorage { /* v konstruktoru jsou závislosti */ }
?>
<?php
namespace Admin\Model\Storage;
class AddStorage extends \Front\Model\Storage\AddStorage { }
?>
config.neon
- Admin\Model\Storage\AddStorage
- Front\Model\Storage\AddStorage
V každém presenteru poté použiji:
@var \Admin\Model\Storage\AddStorage @inject
nebo
@var \Front\Model\Storage\AddStorage @inject
Třída AddStorage je pro mě důležitá, protože tuto závislost potřebuje moje třída, která se stará o formuláře:
<?php
namespace App\FrontModule\Forms;
use Nette\Application\UI\Control;
use Nette\Application\UI\Form;
class ItemForm extends Control {
public $onSuccess;
private $storage;
public function __construct(\Front\Model\Storage\AddStorage $storage) {
$this->storage = $storage;
}
interface IItemForm {
/** @return ItemForm */
public function create();
}
?>
Děkuji všem za případné rady, zaboha nevím jak to vyřešit.