Multiple services of type
- Radkos
- Člen | 62
Ahoj, určitě se to tu už nesčetněkrát řešilo, ale mám problém při
dědičnosti tříd. Mám třídu Settings a AdministrátorSettings. První bude
mít metodu na čtení nastavení, druhá už bude moct nastavení měnit.
Jenže mi to vypíše chybu Multiple services of type App\Models\Settings found:
24_App_BackOfficeModule_Models_AdministratorSettings, 32_App_Models_Settings
Settings:
<?php
namespace App\Models;
class Settings extends BaseManager
{
/**
* @param $setting
* @return bool
*/
public function getSetting($setting){
if($this->Db->table(self::TABLE_OPTIONS)->where('option_name', $setting)->count('*') > 0){
return $this->Db->table(self::TABLE_OPTIONS)->where('option_name', $setting)->fetch()->option_value;
}
else{
return false;
}
}
}
A AdministratorSettings(Zatím ještě nic neobsahuje):
<?php
namespace App\BackOfficeModule\Models;
use App\Models\Settings;
class AdministratorSettings extends Settings
{
}
- Šaman
- Člen | 2666
Ty někde v configu vytváříš službu App\Models\Settings
.
Problém je, že máš dvě. Protože AdministratorSettings
JE
Settings
.
Takže buď si vytvoř jednu abstrakní Settings
a z toho poděď
své dvě třídy, nebo jedné z nich v configu nastav
autowired: no
, což způsobí, že se nebude automaticky předávat
vyšším službám (a budeš ji muset předávat ručně.)
- Radkos
- Člen | 62
Šaman napsal(a):
Ty někde v configu vytváříš službu
App\Models\Settings
. Problém je, že máš dvě. ProtožeAdministratorSettings
JESettings
.
Takže buď si vytvoř jednu abstrakníSettings
a z toho poděď své dvě třídy, nebo jedné z nich v configu nastavautowired: no
, což způsobí, že se nebude automaticky předávat vyšším službám (a budeš ji muset předávat ručně.)
Ono nakonec stačilo, když jsem z configu tu službu
App\Models\Settings
odebral uplně a funguje to.