Vložení rohraní do konstruktoru komponenty
- Jarek92
- Člen | 91
Ahoj, mám entitu, která vypisuje v tabulce záznamy z DB. u každého řádku v tabulce mám handle, který provede určitou operaci. K této operaci však potřebuju vložit přes konstruktor třídu, která se může v závislosti na použití měnit. Tak jsem zvolil rozhraní. nicméně po spuštění aplikace mi Nette vyhodí následující chybu:
Nette\DI\ServiceCreationException
Unused parameter $change when implementing method
App\Components\Grids\IBuildSaveGridFactory::create()
Presenter:
protected function createComponentBuildSaveGrid() {
$grid = $this->buildSaveGridFactory->create($this->buildSaves, $this->change); // $this->change je objekt implementující rozhraní IChange
return $grid;
}
Komponenta BuildSaveGrid:
public function __construct(array $buildSaves, IChange $change) {
parent::__construct();
$this->change = $change;
$this->setBuildSaves($buildSaves);
}
Rohraní IChange:
interface IChange {
public function doIt(int $id);
}
config.neon:
services:
- App\Model\Services\IChange
Ví někdo prosím, proč k té chybě dochází?
Editoval Jarek92 (13. 2. 2018 19:17)
- David Matějka
- Moderator | 6445
chyba je divna, ale proc mas registrovany to IChange jako sluzbu a presto to predavas rucne z presenteru?