„Multiple services of type …“ pri pokuse o extend Modelu

- Thommas2316
 - Člen | 6
 
Zdravím :)
Quick question – pokúšam sa extendovať „koreňový model“, pretože mám 5 premenných, ktoré potrebujem používať vo viacerých modeloch (počet cca 6) a nechcem ich všetky pridávať line by line v __startup BasePresenter-u.
Mám teda „ModelConfig“ a z neho extendujem 4 ďalšie modely.
Keď sa to však pokúsim spustiť, Tracy mi oznámi „Multiple services of type App\Model\ModelConfig found: inputsModel, guaranteedPrizesModel, quizQuestionModel, randomDrawModel“.
ModelConfig:
namespace App\Model;
class ModelConfig extends \Nette\Object
{
    /** @var array */
    public $week;
    /** @var array */
    public $langConfig;
    /** @var string */
    public $lang = 'en';
    /** @var array */
    public $l;
    /** @var \Nette\Http\SessionSection */
    public $userSession;
	....
	....
	....
QuizQuestionModel (a rovnakým princípom všetky ostatné:
namespace App\Model\Mechanics;
class QuizQuestionModel extends \App\Model\ModelConfig
{
    /** @var \Nette\Database\Context */
    private $database;
    /** @var array */
    private $config;
    /** @var \App\Model\UserModel */
    private $userModel;
    /** @var \App\Model\CodeModel */
    private $codeModel;
    /** @var \App\Model\PageModel */
    private $pageModel;
    /** @var \Nette\Security\User */
    private $user;
    public function __construct(\Nette\Database\Context $database, \Nette\DI\Container $container, \App\Model\UserModel $userModel, \App\Model\CodeModel $codeModel, \App\Model\PageModel $pageModel, \Nette\Security\User $user)
    {
        $this->database = $database;
        $this->config = $container->parameters;
        $this->userModel = $userModel;
        $this->codeModel = $codeModel;
        $this->pageModel = $pageModel;
        $this->user = $user;
    }
Je snáď to, o čo sa pokúšam blbosť, alebo existuje nejaký iný spôsob, aby som si nezahltil polovicu BasePresentru „len“ setupovaním premenných modelu ?
Ďakujem veľmi pekne za odpoveď :)
Have a nice day :)

- David Matějka
 - Moderator | 6445
 
Jestli nemas nekde v presenteru jako zavislost uvedenou tu rodicovskou
tridu ModelConfig

- Thommas2316
 - Člen | 6
 
Mám tam len
 	/**
     * @inject
     * @var Model\ModelConfig
     */
    public $modelConfig;
Aby som do tých 5 premenných nalial dáta.
a v neone
services:
	...
	...
	modelConfig: App\Model\ModelConfig
	...
	...
				
- David Matějka
 - Moderator | 6445
 
Hm, to by ti stejne nefungovalo. Udelej radeji to, ze ty konkretni modelove tridy nebudou dedit od ModelConfig, ale vyzadaji ho jako zavislost.

- Thommas2316
 - Člen | 6
 
To by teoreticky aj šlo, jediná issue, ktorú som práve zistil je, že autowiring prebehne skorej, ako naplním dáta v startupe, takže keď v __constructe jednotlivých tried zavolám
$this->langConfig = $modelConfig->langConfig;
$this->week = $modelConfig->week;
$this->lang = $modelConfig->lang;
pemenné obsahujú default values $modelconfig-u